nip*_*nip 3 javascript arrays json object
我正在尝试过滤一个对象数组,其中过滤器是另一个数组(整数),它是第一个数组的属性值.我已经设法让它工作但我不确定它是否是最好的方式.由于我是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);
}
});
});
Run Code Online (Sandbox Code Playgroud)
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"
}
]
}
Run Code Online (Sandbox Code Playgroud)
输出:(预期)
[
{
"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"
}
]
Run Code Online (Sandbox Code Playgroud)
谢谢!
您可以使用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)Run Code Online (Sandbox Code Playgroud)
使用ES6/ES7,你可以这样使用includes().
var result = data.items.filter((e) => itemsids.includes(e.id));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1889 次 |
| 最近记录: |