如何在一个数组中找到一个值,然后从同一数组中输出另一个值?

问题描述

我从一个名为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));