首页 > 解决方案 > 使用 js `map` 形成一个新的扁平对象

问题描述

我不确定map语法。

我试图result score从原始对象中获取作为新对象的一部分。

filteredResults.push(currentResults
  .map(({ item, result }) => ({
    ...item,
    resultScore,
    result: {
      ...result,
      name:
        !Array.isArray(result.name) ?
          result.name
          : result.name
            .filter(({ '@language': lang }) => !negLanguagesParam.includes(lang))
    }
  }))

您如何阅读此语法?

它不遵循API 语法

For each 项目in当前结果 modify ...

这是什么...意思,我应该如何正确使用它?

您将如何在新对象中添加resultScore下一个?name

原始对象数组:

在此处输入图像描述

我希望它会变成:

在此处输入图像描述

更新

我认为这些评论解释了我在寻找什么:

filteredResults.push(currentResults
  .map(({ allOther, resultScore, result }) => ({
    ...allOther,  
    result: {
      ...result, //shallow copy the object
      resultScore,  //add new memebr1
      name: //add new memebr2
        !Array.isArray(result.name) ?
          result.name
          : result.name
            .filter(({ '@language': lang }) => !negLanguagesParam.includes(lang)) //({}) for taking a specific named attribute
    }
  }))

标签: javascriptarraysfilter

解决方案


推荐阅读