2015-02-11 111 views
0

我想爲列表中的活動項目和非活動項目創建一個數組。我目前有以下代碼。下面的代碼工作,但我希望格式是與現有的數組相同。將現有數組推入多個數組js

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

有沒有一種方法可以在不命名的情況下推動整個對象?

回答

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); 
} 
+0

此外,如果您將使用該功能: 'var active = getData('active');'和'var inactive = getData()' – 2015-02-11 02:56:01

0

如果我對你的理解正確,那麼你所需要做的就是active.push(myData[i])將參考推入陣列,併爲inactive做相同的操作。

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]); 
      } 
    } 
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);