如何在不使用for循环的对象数组中搜索ID



我知道我可以通过使用for循环和if语句来搜索这个对象数组,

var junkData = [
{ "ID": "1", "AreaName": "Area A Tester" },
{ "ID": "2", "AreaName": "Area B Test" },
{ "ID": "3", "AreaName": "Area C" },
{ "ID": "4", "AreaName": "Area D 12" },
{ "ID": "5", "AreaName": "Area E" }
];

但我还有哪些其他方式?我想在ID上搜索,然后返回那个对象。因此,如果我想搜索ID 3,那么它会返回ID为3的对象。

除了使用带有if语句的for循环之外,还有哪些其他选项可用?

改用Array#find

var junkData = [
{ "ID": "1", "AreaName": "Area A Tester" },
{ "ID": "2", "AreaName": "Area B Test" },
{ "ID": "3", "AreaName": "Area C" },
{ "ID": "4", "AreaName": "Area D 12" },
{ "ID": "5", "AreaName": "Area E" }
];
console.log(junkData.find(e => e.ID == 3))

您可以过滤结果。

var junkData = [
{ "ID": "1", "AreaName": "Area A Tester" },
{ "ID": "2", "AreaName": "Area B Test" },
{ "ID": "3", "AreaName": "Area C" },
{ "ID": "4", "AreaName": "Area D 12" },
{ "ID": "5", "AreaName": "Area E" }
];
console.log(findBy(junkData, 'ID', '2', true));
function findBy(arr, key, val, onlyOne) {
return (ret => onlyOne ? ret.shift() : ret)(arr.filter(item => item[key] === val));
}
.as-console-wrapper { top: 0; max-height: 100% !important; }

ret是过滤结果的返回(在右括号中(。我把它封装在一个自返回函数中。您也可以在返回之前将过滤后的结果分配给一个变量。

最新更新