我知道我可以使用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循环之外,还有哪些其他选项可用?
发布于 2018-08-02 11:04:59
使用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))
发布于 2018-08-02 11:07:42
你可以过滤结果。
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是过滤结果的返回(在右括号中)。我把它包装在一个自返回函数中。还可以在返回之前将筛选的结果赋值给变量。
https://stackoverflow.com/questions/51652011
复制相似问题