2016-01-13 80 views
-1

我有一個如下所示的數據數組。我想選擇x === 1和name ===「Dog」的對象,然後將它們推送到一個新的數組中。 arr2是我期待的結果。感謝你的幫助!在條件數組中選擇對象並生成新數組javascript

var arr1 = [   
      {y:2.5, x:1, name: "Dog"}, 
      {y:2.7, x:1, name: "Dog"}, 
      {y:2.7, x:1, name: "Dog"}, 
      {y:3.1, x:1, name: "Dog"}, 
      {y:2.7, x:2, name: "Dog"}, 
      {y:2.6, x:2, name: "Dog"}, 
      {y:3.0, x:2, name: "Dog"}, 
      {y:2.9, x:2, name: "Dog"}, 

      {y:3.0, x:0.7, name: "Cat"}, 
      {y:3.0, x:0.7, name: "Cat"}, 
      {y:3.1, x:0.7, name: "Cat"}, 
      {y:3.0, x:0.7, name: "Cat"}, 
      {y:2.9, x:2.3, name: "Cat"}, 
      {y:2.8, x:2.3, name: "Cat"}, 
      {y:2.7, x:2.3, name: "Cat"}, 
      {y:2.8, x:2.3, name: "Cat"}, 

      {y:2.5, x:1, name: "Dog"}, 
      {y:2.4, x:1, name: "Dog"}, 
      {y:2.5, x:1, name: "Dog"}, 
      {y:3.5, x:1, name: "Dog"}, 
      {y:2.7, x:2, name: "Dog"}, 
      {y:2.6, x:2, name: "Dog"}, 
      {y:2.8, x:2, name: "Dog"}, 
      {y:2.9, x:2, name: "Dog"} 
      ] 

    var arr2 = [ 

        {y:2.5, x:1, name: "Dog"}, 
        {y:2.7, x:1, name: "Dog"}, 
        {y:2.7, x:1, name: "Dog"}, 
        {y:3.1, x:1, name: "Dog"}, 
        {y:2.5, x:1, name: "Dog"}, 
        {y:2.4, x:1, name: "Dog"}, 
        {y:2.5, x:1, name: "Dog"}, 
        {y:3.5, x:1, name: "Dog"} 


] 

我想這一點,但它不工作:

for (var i = 0; i < arr1.length; i++) { 
    if (arr1[i].x === 1 && arr1[i].name === "Dog"){ 
    return ****; 
    arr2.push(***) 
    } 
    } 
+5

你想要做什麼['.filter()'](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter )是。 – Pointy

+0

這應該很容易通過網絡搜索獲得一些方向 – charlietfl

回答

1

嘗試以下

var arr2 = arr1.filter(function(item){ 
    return item.x === 1 && item.name === "Dog" 
}); 

如果arr2已經存在,那麼你可以使用數組拼接

arr2.concat(arr1.filter(function(item){ 
    return item.x === 1 && item.name === "Dog" 
})); 

供參考ence - Array filter

+1

我認爲他需要將結果連接到array2。如果是: '''arr2.concat(arr1.filter(function(item){ return item.x === 1 && item.name ===「Dog」 }));''' – ema

+1

@ema - OP提到了新的數組,因此排除了串聯部分。但是,正如你所提到的那樣,我也會加入這個作爲解決方案的一部分 – nikhil