javascript - .filter() 方法返回一个空数组
问题描述
我正在尝试使用 JavaScript 的 filter() 方法返回一个对象数组,其中对象具有特定值。在我的场景中,用户可以有名字、姓氏和附加的多个字符。
我正在尝试使用 filter() 返回任何具有至少 100 个或更多黄金字符的对象,但它返回一个空数组。这是我写的:
var users = [{
firstname: 'Owen',
lastname: 'Wilson',
characters: [{
race: 'dwarf',
level: 80,
gold: 150
},
{
race: 'dark elf',
level: 75,
gold: 50
},
{
race: 'human',
level: 70,
gold: 75
}
]
},
{
firstname: 'Vince',
lastname: 'Vaughan',
characters: [{
race: 'dwarf',
level: 80,
gold: 90
},
{
race: 'dark elf',
level: 75,
gold: 50
},
{
race: 'human',
level: 70,
gold: 75
}
]
},
{
firstname: 'Ben',
lastname: 'Stiller',
characters: [{
race: 'dwarf',
level: 80,
gold: 200
},
{
race: 'dark elf',
level: 75,
gold: 50
},
{
race: 'human',
level: 70,
gold: 75
}
]
}
];
var minimumGold = element => element.characters.gold >= 100;
var usersWithLotsOfGold = users.filter(minimumGold);
console.log(usersWithLotsOfGold);
// Expected objects [0] and [2]
解决方案
您需要检查characters
数组中的每个字符。一种方法是这样使用Array.prototype.some()
:
const users = [{firstname:'Owen',lastname:'Wilson',characters:[{race:'dwarf',level:80,gold:150},{race:'dark elf',level:75,gold:50},{race:'human',level:70,gold:75}]},{firstname:'Vince',lastname:'Vaughan',characters:[{race:'dwarf',level:80,gold:90},{race:'dark elf',level:75,gold:50},{race:'human',level:70,gold:75}]},{firstname:'Ben',lastname:'Stiller',characters:[{race:'dwarf',level:80,gold:200},{race:'dark elf',level:75,gold:50},{race:'human',level:70,gold:75}]}];
const minimumGold = element => element.characters.some(
character => character.gold >= 100
);
const usersWithLotsOfGold = users.filter(minimumGold);
console.log(usersWithLotsOfGold);
推荐阅读
- reactjs - 按钮单击不会在内容 UI 中显示条件卡
- java - 在android上的谷歌地图上更改markerSnippet
- php - 如何自定义我的 WordPress 帖子生成的 wp-json oembed?
- css - CSS SPECIFITY 如何覆盖类的样式
- javascript - 如何使用正则表达式根据javascript中的条件从字符串的开头删除子字符串?
- c - 如何将 Switch-Case 和 Goto 命令变成别的东西?
- python - 你好世界!我被这个错误困住了。谁能帮我解决这个问题?我将不胜感激任何形式的评估
- jenkins - 使用 jmeter 对 jenkins master 进行压力测试
- r - 与 {highcharter} 等效的 highcharts 地图
- open-liberty - webprofile 6 在 openliberty 中丢失,但在 websphere liberty 中没有