在条件数组中选择对象并生成新数组javascript
问题描述:
我有一个如下所示的数据数组。我想选择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(***)
}
}
答
尝试以下
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
你想要做什么['.filter()'](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter )是。 – Pointy
这应该很容易通过网络搜索获得一些方向 – charlietfl