【问题标题】:How do I search for an element in an array then output another element from the same array? [closed]如何在数组中搜索一个元素,然后从同一个数组中输出另一个元素? [关闭]
【发布时间】:2020-09-12 19:35:21
【问题描述】:

我有一个来自名为wpm 的数组的已知值(来自一个从对象数组中提取最大值的函数),然后我需要在对象数组中搜索并输出一个名为“raw”的值'。因此,如果 wpm = 96,并且数组中有 2 个对象,例如

[
    {raw: 36, wpm: 96},
    {raw: 45, wpm: 94}
]

预期输出为 36。

【问题讨论】:

  • 这应该是一个对象数组吗?
  • 是的,抱歉 - 已编辑
  • 您的代码错误,数组不能在js 中有命名索引,您不能这样声明它们;把这个:array1 = [raw: 36, wpm: 96]改成这个:array1 = {raw: 36, wpm: 96}
  • 对不起,我会解决这个问题,我犯了一个错误
  • 您的所有编辑都没有产生有效数据。花几分钟阅读如何创建minimal reproducible example

标签: javascript arrays algorithm object


【解决方案1】:

通过函数filter 和解构赋值,您可以获得raw 属性并且不用担心不存在的对象。

const arr = [{raw: 36, wpm: 96}, {raw: 45, 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, wpm: 96}, {raw: 45, wpm: 94}],
      finder = (wpmTarget) => {
        let {raw} = arr.find(({wpm}) => wpm === wpmTarget) || {};
        return raw;
      };
      
console.log(finder(96));
console.log(finder(946));

【讨论】:

    【解决方案2】:

    假设这是一个对象数组,您可以将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: 96}, {raw: 45, wpm: 94}];
    let val = 96;
    console.log(arr.find(({wpm})=>wpm===val)?.raw);
    val = -1;
    console.log(arr.find(({wpm})=>wpm===val)?.raw);

    【讨论】:

    • @iota 我们不是supposed 用完整的代码解决方案来回答“硬件问题”(我该怎么做“x”)吗?
    • @JBallin 道歉,如果我似乎在问一个“家庭作业”问题,但我不是,我没有要求代码,如果它是正确的直接点,例如说“使用 Array#find”对我来说已经足够了——我以后会更清楚地组织我的问题。
    • @Proto 对这个问题的改进是在问题上表现出“真诚的尝试”:解释你尝试了什么,什么没有奏效。
    • 我总是忘记,我实际上已经尝试解决我的问题,这是我修复它的第三个小时 - 抱歉我没有说清楚!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-17
    • 1970-01-01
    • 1970-01-01
    • 2014-01-21
    • 1970-01-01
    • 2020-07-20
    相关资源
    最近更新 更多