#javascript #arrays #object #flatten
#javascript #массивы #объект #сгладить
Вопрос:
У меня есть многомерный массив с объектами в нем .. Как я могу его сгладить
myarr[0] =[{"name":"john","age":"50","location":"san diego"}
,{"name":"jane","age":"25","location":"new york"}
,{"name":"susane","age":"10","location":"los angeles"}
];
myarr[1] =[{"smoker":"yes","drinker":"no","insured":"no"}
,{"smoker":"no","drinker":"no","insured":"yes"}
,{"smoker":"no","drinker":"yes","insured":"no"}
];
myarr[1] =[{"status":"married","children":"none"}
,{"status":"unmarried","children":"one"}
,{"status":"unmarried","children":"two"}
];
Комментарии:
1. сгладить означает сгладить многомерный массив — сделать из него одномерный массив — я имею в виду, извините за путаницу. например, мой массив, содержащий все объекты в порядке возрастания.
2.Посмотрите
concat
здесь.
Ответ №1:
Я думаю, это то, что вы пытаетесь сделать.
Сначала вам нужна простая вспомогательная функция для объединения двух объектов:
function merge(a, b) {
a = a || { };
for(var k in b)
if(b.hasOwnProperty(k))
a[k] = b[k];
return a;
}
Затем вы можете просто перебирать свой массив массивов, чтобы объединить объекты:
var flat = [ ];
for(var i = 0; i < myarr.length; i)
for(var j = 0; j < myarr[i].length; j)
flat[j] = merge(flat[j], myarr[i][j]);
А затем отсортировать его:
flat.sort(function(a, b) {
a = a.location;
b = b.location;
if(a < b)
return -1;
if(a > b)
return 1;
return 0;
});
Демонстрация (запуск с открытой консолью JavaScript): http://jsfiddle.net/ambiguous/twpUF /
Ссылки: