javascript - 按子对象中的键和/或值过滤对象数组
问题描述
假设我有一组看起来像这样的用户:
[
{
"id": 1,
"name": "Melody Adam",
"interests": {
"hockey": "somewhat",
"football": "yes"
}
},
{
"id": 2,
"name": "Antonio Rutledge",
"interests": {
"football": "somewhat",
"curling": "no",
"polevaulting": "somewhat"
}
},
]
我将如何通过interests
对象中的内容过滤这个数组,例如值是"somewhat"
什么时候或者键是什么时候"football"
?我正在尝试围绕 Array.prototype.filter 和 Array.prototype.reduce 进行思考,但仍然不太明白。我知道我可以使用类似users.filter(({ name }) => name === "Melody Adam")
基于对象“顶层”的东西进行过滤的东西,但在“更深”一步时不能保持数组完整(如果有任何更好/正确的术语,请让我知道)。
解决方案
var testarr = [
{
"id": 1,
"name": "Melody Adam",
"interests": {
"hockey": "somewhat",
"football": "yes"
}
},
{
"id": 2,
"name": "Antonio Rutledge",
"interests": {
"football": "somewhat",
"curling": "no",
"polevaulting": "somewhat"
}
},
];
var search = "somewhat";
var selectedItems = [];
jQuery.each(testarr, function (i, item) {
if (item && search && item.interests && item.interests.football) {
var value = item.interests.football.trim().toLowerCase();
if (search === value) {
selectedItems.push(item);
}
}
});
推荐阅读
- mysql - MySQL加入相同的列名
- python - 如何显示特定产品的所有评论?
- python - 使用别名运行的 Python
- python - 如何使用 python 在 google colab 中保存 json 转储?
- angular - 在角度 6 中,如何使用 '-' 而不是使用 '/' 来制作 url
- wordpress - 云上的多区域 wordpress 部署
- python - Matplotlib 实时图能够处理数据更新之间的长时间
- r - 应用函数中二元运算符的非数字参数
- java - 获取 java.lang.NoClassDefFoundError: 无法初始化类 com.sun.org.apache.xml.internal.serializer.Encodings
- java - 在 Eclipse IDE 中执行 Flink 应用程序