2016-01-13 88 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