从对象数组中获取所需对象

时间:2017-11-16 09:37:28

标签: javascript

这是我在stackoverflow中的第一个问题,所以感谢任何类型的帮助。

我有一个像这样的数组

var products = [{status:'available', ...},{status:'none', ...},{status:'available', ...},{status:'', ...},{status:'none', ...}]

如何获得仅包含products[i].status = 'available'的数组。

我已经用 for循环做了这个,但是没有更好的方法吗?我的代码现在几乎充满了循环和&它不容易阅读。

谢谢你的帮助。

6 个答案:

答案 0 :(得分:4)

使用Array.filter方法

products.filter(function(product){
    return product.status == 'available'
})

答案 1 :(得分:4)

使用箭头功能(ES6)是最短的

products.filter(product => product.status == 'available')

将返回状态为"available"

的适当产品数组

答案 2 :(得分:1)

试试这个

var products = [{
  status: 'available'
}, {
  status: 'none'
}, {
  status: 'available'
}, {
  status: ''
}, {
  status: 'none'
}]

var array = $.map(products, function(value, index) {
 

  if (value["status"] == "available") {
    return [value];
  }

});

console.log(array);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>

答案 3 :(得分:1)

https://jsfiddle.net/dvwu75ja/

试试这个

var products = [{status:'available'},{status:'none'},{status:'available'},{status:''},{status:'none'}];
x = 0;
products.forEach(function(element) {

    if(element["status"] == "available"){
       //code here, x is just to represent what index you are in now
        console.log(x);
    }
    x++;
});

希望得到这个帮助

答案 4 :(得分:1)

var products = [{status:'available'},{status:'none'},{status:'available'},{status:''},{status:'none'}];
for(var i = 0; i < products.length; i++){
if(products[i].status == products[0].status){
 console.log(this.products[i]);
}
}

答案 5 :(得分:0)

使用 ES5 最支持这个:

products.filter(function(product){return product.status === 'available'})

使用 ES6 也可以,但并非所有浏览器都支持ES6:

products.filter(product => product.status === 'available')