问题描述
我从一个名为wpm
的数组中获得一个已知值(从一个从对象数组中提取最大值的函数中),然后需要在一个对象数组中进行搜索并输出一个称为'生的'。因此,如果wpm = 96,并且数组中有2个对象,例如
[
{raw: 36,wpm: 96},{raw: 45,wpm: 94}
]
预期输出为36。
解决方法
假设这是一个对象数组,则可以将Array#find
用于解构。
const arr = [{raw: 36,wpm: 96},{raw: 45,wpm: 94}];
let val = 96;
let {raw} = arr.find(({wpm})=>wpm===val);
console.log(raw);
如果要搜索的属性值可能不存在,则可以使用可选的链接运算符。
const arr = [{raw: 36,wpm: 94}];
let val = 96;
console.log(arr.find(({wpm})=>wpm===val)?.raw);
val = -1;
console.log(arr.find(({wpm})=>wpm===val)?.raw);
,
使用功能filter
和解构分配,您可以获取属性raw
,而不必担心不存在的对象。
const arr = [{raw: 36,wpm: 94}],finder = (wpmTarget) => {
let [{raw} = {}] = arr.filter(({wpm}) => wpm === wpmTarget);
return raw;
};
console.log(finder(96));
console.log(finder(946));
使用功能find
可以使用OR
运算符来分配默认的空对象并避免使用TypeError
。
const arr = [{raw: 36,finder = (wpmTarget) => {
let {raw} = arr.find(({wpm}) => wpm === wpmTarget) || {};
return raw;
};
console.log(finder(96));
console.log(finder(946));