我正在尝试将项目推送到数组。
我有类似的东西
var t = [];
items = [
{id:123, name:'test1', category:'toy'},
{id:123, name:'test2', category:'cookies'},
{id:789, name:'test3', category:'toy'},
{id:155, name:'test4', category:'pen'},
{id:155, name:'test5', category:'eraser'}
];
items.map(function(item) {
t[item.id].push(item.category);
//do other things
})
我需要的最终结果
t = [
{123: ['toy', 'cookies']},
{789: ['toy']},
{155: ['pen', 'eraser']}
]
我无法读取未定义的属性“push”。 有更好的办法来解决这个问题吗?多谢!
最佳答案
使用t
作为对象而不是数组,每个对象都会有一个数组值,并且之前也必须分配该值,尝试:
var t = {}, items = [
{id:123, name:'test1', category:'toy'},
{id:123, name:'test2', category:'cookies'},
{id:789, name:'test3', category:'toy'},
{id:155, name:'test4', category:'pen'},
{id:155, name:'test5', category:'eraser'}
];
items.forEach(function(item){
!t[item.id] && (t[item.id] = []);
t[item.id].push(item.category)
})
document.write(JSON.stringify(t));
document.write("<br><b>" + t[123] + "</b>"); //<= Get items by ID
//In your case
var tArray = [];
for(var id in t){
var obj = {};
obj[id] = t[id];
tArray.push(obj)
}
document.write("<br>" + JSON.stringify(tArray));
关于javascript - 如何在我的案例中将数组存储在对象中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31012681/