我有一个数组,其中保存有关可用性的信息以及有关产品的其他一些信息。与其返回数组中的所有数据,我只想返回avail = true的数组中的文档,然后返回按id排序的所有文档。
[
{
"id": 5,
"avail": true,
"name": "product A",
"qty": 18
}, {
"id": 9,
"avail": false,
"name": "product B",
"qty": 0
}, {
"id": 7,
"avail": true,
"name": "product C",
"qty": 3
}, {
"id": 1,
"avail": true,
"name": "product D",
"qty": 47
}, {
"id": 4,
"avail": false,
"name": "product E",
"qty": 0
}
]
答案 0 :(得分:2)
const result = original.filter(x => x.avail);
result.sort((a, b) => a.id - b.id);
答案 1 :(得分:1)
首先,您可以通过在数据数组上调用Array.prototype.filter
来仅获取具有avail: true
的记录。接下来,使用Array.prototype.sort
对这些结果进行排序,并比较每个数组元素的id
值。
这是一个例子:
const getAvailableProducts = allProducts => allProducts.filter(el => el.avail).sort((a, b) => a.id - b.id);
const available = getAvailableProducts([{
"id": 5,
"avail": true,
"name": "product A",
"qty": 18
}, {
"id": 9,
"avail": false,
"name": "product B",
"qty": 0
}, {
"id": 7,
"avail": true,
"name": "product C",
"qty": 3
}, {
"id": 1,
"avail": true,
"name": "product D",
"qty": 47
}, {
"id": 4,
"avail": false,
"name": "product E",
"qty": 0
}]);
console.log('The following products are available:');
console.log(available);
答案 2 :(得分:1)
您可以使用filter
和sort
来完成此操作:
var arr = [
{
"id": 5,
"avail": true,
"name": "product A",
"qty": 18
}, {
"id": 9,
"avail": false,
"name": "product B",
"qty": 0
}, {
"id": 7,
"avail": true,
"name": "product C",
"qty": 3
}, {
"id": 1,
"avail": true,
"name": "product D",
"qty": 47
}, {
"id": 4,
"avail": false,
"name": "product E",
"qty": 0
}
];
var newArr = arr.filter(a => {
return a.avail;
}).sort((a, b) => {
return a.id > b.id;
});
console.log(newArr)
答案 3 :(得分:0)
const data = [{
"id": 5,
"avail": true,
"name": "product A",
"qty": 18
}, {
"id": 9,
"avail": false,
"name": "product B",
"qty": 0
}, {
"id": 7,
"avail": true,
"name": "product C",
"qty": 3
}, {
"id": 1,
"avail": true,
"name": "product D",
"qty": 47
}, {
"id": 4,
"avail": false,
"name": "product E",
"qty": 0
}];
const filteredData = data.filter(x => x.avail).sort((a, b) => a.id - b.id);
console.log(filteredData);