如果值匹配,我想将值从一个数组插入到另一个数组。
这些是我的数组。
var names = [{key: 'Apple'}, {key: 'Dell'}, {key: 'Xitrix'}];
var data = [
{enum_name:'Apple', date:'2000-12-15', accomp: 12},
{enum_name:'Dell', date:'2000-12-15', accomp: 8},
{enum_name:'Apple', date:'2000-12-16', accomp: 12},
{enum_name:'Xitrix', date:'2000-12-16', accomp: 12},
{enum_name:'Dell', date:'2000-12-17', accomp: 8},
{enum_name:'Xitrix', date:'2000-12-17', accomp: 12},
];
然后我想将 data.date 和 data.accomp 插入到具有特定键的数组 names 中(例如 attrib: [arrays];
我有这段代码,但它没有将所有匹配的数据插入到key attrib。
var counts = 0;
_.each(names, function(v, k){
_.each(data, function(val, key){
if(v.key == val.enum_name){
var date = val.date;
var accomp= val.accomp;
names[k].attrib= [[date, accomp]];
console.log(counts);
counts++;
}
});
counts = 0;
//names[k]['values'] = 'test';
});
我想要这样的输出。
names = [
{key: 'Apple', attrib: [['2000-12-15', 12], ['2000-12-16', 12]]},
{key: 'Dell', attrib: [['2000-12-15', 8], ['2000-12-17', 8]]},
{key: 'Xitrix', attrib: [['2000-12-16', 12], ['2000-12-17', 12]]}
];
最佳答案
尝试将 reduce
用于一个由 enum_name
索引的对象,其中包含一个 date
和 accomp
数组,然后获取该对象的值,不需要库,并且运行时复杂性较低:
var names = [{key: 'Apple'}, {key: 'Dell'}, {key: 'Xitrix'}];
var data = [
{enum_name:'Apple', date:'2000-12-15', accomp: 12},
{enum_name:'Dell', date:'2000-12-15', accomp: 8},
{enum_name:'Apple', date:'2000-12-16', accomp: 12},
{enum_name:'Xitrix', date:'2000-12-16', accomp: 12},
{enum_name:'Dell', date:'2000-12-17', accomp: 8},
{enum_name:'Xitrix', date:'2000-12-17', accomp: 12},
];
console.log(Object.values(
data.reduce((a, { enum_name: key, date, accomp }) => {
if (!a[key]) a[key] = { key, attrib: [] };
a[key].attrib.push([date, accomp]);
return a;
}, {})
));
关于javascript - 如何在javascript中将值插入数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51093134/