for (var i = 0, keys = Object.keys(map), ii = keys.length; i < ii; i++) {
  console.log(keys[i] + '|' + map[keys[i]]);
}

У меня есть карта, которую я хотел бы распечатать в следующем формате:

customer1|asdfasdf,asdfasdf,asdfa
customer2|adf
customer3|asdf,rthrg
customer5|dfgbdf
customer4|bfdgbfg,bdfgb,dfgb
customer6|sdfgf
customer7|xcvb,xvcbff

Вместо этого я получаю это. Каждый из этих объектов содержит список строк, которые я хотел бы напечатать выше. Как я могу это сделать?

customer1|[object Object]
customer2|[object Object]
customer3|[object Object]
customer5|[object Object]
customer4|[object Object]
customer6|[object Object]
customer7|[object Object]
1
Martin Erlic 29 Авг 2017 в 15:06

3 ответа

Лучший ответ

Ничего. Я нашел ответ. Мне нужно распечатать список.

for (var i = 0, keys = Object.keys(map), ii = keys.length; i < ii; i++) {
  console.log(keys[i] + '|' + map[keys[i]].list);
}
0
Martin Erlic 29 Авг 2017 в 12:11

Вы можете сделать что-то вроде этого:

function printKeys(map){
	for (var i = 0, keys = Object.keys(map), ii = keys.length; i < ii; i++) {
		val = map[keys[i]];
		if(typeof val === 'object'){
			printKeys(val);
		}else{
			console.log(keys[i] + '|' + map[keys[i]]);
		}
	}
}

map = {a :1, b:2, c:3, d: {d1: 4}};
printKeys(map);

Надеюсь, это поможет!

0
MrGoodKat 29 Авг 2017 в 12:16

Попробуйте нормальный цикл forEach и используйте его следующим образом:

var cust = {
  customer1: ["cus1Value1", "cus1Value2", "cus1Value3"],
  customer2: ["cus2Value1", "cus2Value2", "cus2Value3", "cus3value4"],
  customer3: ["cus3Value1", "cus3Value2"],
  customer4: ["cus4Value1", "cus4Value2"],
  customer5: ["cus5Value1", "cus5Value2"]
};

var keys = Object.keys(cust);
keys.forEach(key=>{
  console.log(key + '|' + cust[key]);
});
1
Batman25663 29 Авг 2017 в 12:31