我有大约500条记录的对象数组。我想循环遍历对象数组,并检查对象名称是否等于元素之一。这是我的对象数组的示例:
data = [
{
"row": 23,
"code": "ERT"
},
{
"row": 45,
"code": "TTR"
},
{
"row": 90,
"code": "CXZ"
}
];
这是我到目前为止尝试过的:
data.some(function (obj) {
if(obj.name === "code"){
return obj[name]; // Return value if name exists
}
});
我想检查name
是否存在于对象中。如果是,请拉取该名称的值。我的代码将在控制台中产生undefined
。有人可以帮忙吗?有没有办法做到这一点?
答案 0 :(得分:1)
如果我正确理解了您的问题,则可以通过.filter()
来解决此问题,对于每个要过滤的项目,您都要检查项目的键(通过Object.keys()
),以查看其中是否包含任何您要搜索/过滤的键:
var namesToCompare = ['name', 'code'];
var data = [
{
"row": 23,
"code": "ERT"
},
{
"row": 45,
"code": "TTR"
},
{
"row": 90,
"code": "CXZ"
},
{
"row": 91,
"code": "ABC",
"name" : "code"
}
];
var result = data
.filter(item => Object
.keys(item)
.find(key => namesToCompare.includes(key)))
console.log('items with keys', namesToCompare, 'in list', result);
答案 1 :(得分:1)
类似的东西:
data = [
{
"row": 23,
"code": "ERT"
},
{
"row": 45,
"code": "TTR"
},
{
"row": 90,
"code": "CXZ"
}
];
$.each(data, function(index,v) {
$.each(v, function(key,val) {
if(key == "code")
console.log(val)
}
});
});
没有内循环:
for (var key in data){
if(key == "code"){
console.log(key)
}
}
答案 2 :(得分:1)
您可以执行以下操作:
const name = "code";
const data = [
{
"row": 23,
"code": "ERT"
},
{
"row": 45,
"code": "CXZ"
},
{
"row": 90,
"code": "TTR"
},
{
"row": 190,
"code": "CXZ"
}
];
const values = [];
data.forEach(element => {
if (Object.keys(element).includes(name)) {
values.push(element[name]);
}
});
console.log(values);
Object.keys捕获对象的所有键,然后在这些键中搜索“名称”。