我想在列表中为活动项和非活动项创建一个数组。我目前有以下代码。以下代码可行,但我希望格式与现有数组相同。
var myData = [
{"text" : "item 1", "id":11111, "active" : 0 },
{"text" : "item 2", "id":22222, "active" : 1 },
{"text" : "item 3", "id":33333, "active" : 1 },
{"text" : "item 4", "id":44444, "active" : 0 }
];
console.log(myData[0].text); //returns item 1
var active = [];
var inactive = [];
for (var i = 0; i < myData.length; i++) {
if(myData[i].active) {
active.push({
items: myData[i];
});
}
else {
inactive.push({
items: myData[i];
});
}
}
console.log(active[0].items.text); //returns item 2
console.log(inactive[0].items.text); //returns item 1
我似乎无法弄清楚如何在不命名的情况下将整个对象推入数组。
我想设置我的数组,以便我可以使用console.log
活性[0]的.text
而不是必须进入下一个级别并继续
活性[0] .items.text
有没有办法在没有命名的情况下推动整个对象?
答案 0 :(得分:1)
var myData = [
{"text" : "item 1", "id":11111, "active" : 0 },
{"text" : "item 2", "id":22222, "active" : 1 },
{"text" : "item 3", "id":33333, "active" : 1 },
{"text" : "item 4", "id":44444, "active" : 0 }
];
var active = [];
var inactive = [];
for (var i in myData){
var item = myData[i];
if (item.active){
active.push(item);
}else{
inactive.push(item);
}
}
console.log(active, inactive);
答案 1 :(得分:1)
var myData = [
{"text" : "item 1", "id":11111, "active" : 0 },
{"text" : "item 2", "id":22222, "active" : 1 },
{"text" : "item 3", "id":33333, "active" : 1 },
{"text" : "item 4", "id":44444, "active" : 0 }
];
console.log(myData[0].text); //returns item 1
var active = myData.filter(function(data){
return data.active;
});
var inactive = myData.filter(function(data){
return !data.active;
});
或者也许让它成为一种功能
function getData(type){
return myData.filter(function(data){
return (type == 'active') ? data.active : !data.active;
});
}
如果您已经在使用ES6箭头功能,可以将它们缩短为:
var active = myData.filter(data => data.active);
var inactive = myData.filter(data => !data.active);
function getData(type){
return myData.filter(data => (type == 'active') ? data.active : !data.active);
}
答案 2 :(得分:0)
如果我理解正确,您需要做的就是active.push(myData[i])
将引用推送到数组中并对inactive
执行相同操作。
答案 3 :(得分:0)
不要推送包含活动/非活动对象的新对象,而只需按下现有对象。
var active = [];
var inactive = [];
for (var i = 0; i < myData.length; i++) {
if(myData[i].active) {
active.push(myData[i]);
} else {
inactive.push(myData[i]);
}
}