gpt4 book ai didi

javascript - 从数组中过滤多个对象

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:41:29 25 4
gpt4 key购买 nike

我正在尝试过滤一个对象数组,其中过滤器是另一个数组(整数),它们是第一个数组的属性值。我已经设法让它发挥作用,但我不确定这是否是最好的方法。由于我是 JavaScript 的初学者,如果有任何建议/改进,我将不胜感激。

items.json 文件包含一个带有对象数组的对象。我想过滤所有 id 等于 itemsids 数组上的“ids”的对象(在该数组中)。

代码:

const itemsall = require('./items.json');

let itemsids = [1, 403, 3];

let filtereditems = [];

itemsids.forEach(id => {
itemsall.items.forEach(item => {
if (id === item.id) {
filtereditems.push(item);
}
});
});

items.json(一小部分)

{
"items": [
{
"id": 0,
"name": "Egg",
"img": "http://www.serebii.net/pokemongo/items/egg.png"
},
{
"id": 1,
"name": "Pokeball",
"img": "http://www.serebii.net/pokemongo/items/20pokeballs.png"
},
{
"id": 2,
"name": "Greatball",
"img": "http://www.serebii.net/pokemongo/items/greatball.png"
}
]
}

输出:(预期)

[
{
"id": 0,
"name": "Egg",
"img": "http://www.serebii.net/pokemongo/items/egg.png"
},
{
"id": 403,
"name": "Cool Incense",
"img": "http://www.serebii.net/pokemongo/items/incense.png"
},
{
"id": 3,
"name": "Ultraball",
"img": "http://www.serebii.net/pokemongo/items/ultraball.png"
}
]

谢谢!

最佳答案

您可以使用 filter()indexOf() 返回过滤后的数组。

var data = {
"items": [{
"id": 0,
"name": "Egg",
"img": "http://www.serebii.net/pokemongo/items/egg.png"
}, {
"id": 1,
"name": "Pokeball",
"img": "http://www.serebii.net/pokemongo/items/20pokeballs.png"
}, {
"id": 2,
"name": "Greatball",
"img": "http://www.serebii.net/pokemongo/items/greatball.png"
}]
}
let itemsids = [1, 403, 3];

var result = data.items.filter(function(e) {
return itemsids.indexOf(e.id) != -1
})

console.log(result)

对于 ES6/ES7,您可以使用 includes()像这样。

var result = data.items.filter((e) => itemsids.includes(e.id));

关于javascript - 从数组中过滤多个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41067282/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com