这是我在stackoverflow中的第一个问题,所以感谢任何类型的帮助。
我有一个像这样的数组
var products = [{status:'available', ...},{status:'none', ...},{status:'available', ...},{status:'', ...},{status:'none', ...}]
如何获得仅包含products[i].status = 'available'
的数组。
我已经用 for循环做了这个,但是没有更好的方法吗?我的代码现在几乎充满了循环和&它不容易阅读。
谢谢你的帮助。
答案 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')