javascript - 如果在另一个对象数组中找到属性,则映射对象

标签 javascript arrays

这是我的情况。

data: [
    {
      q: "question 1",
      a: "answer 1"
    }, 
    {
      q: "question 2"
    }
]

如何将其映射到 key: value配对,最终输出为 { "question 1": "answer 1"} ?

诀窍是,只有 a属性存在,则应将其分配给新对象,如上例 { "question N": "answer N"} .

我试过结合.map().filter() ,但它没有用。

例如:
const obj = data.map(e => e.q).filter(s => s.a)

谢谢。

最佳答案

您需要先过滤元素然后映射

let data = [{q: "question 1",a: "answer 1"},{q: "question 2"}]

const obj = data.filter(s => s.a)
                .map(({q,a}) => ({ [q]: a }))

console.log(obj)



我们可以将输出作为对象,您可以使用reduce并构建一个对象,

let data = [{q: "question 1",a: "answer 1"},{q: "question 2"}]

const obj = data.reduce((op,{q,a})=>{
  if( a ) op[q] = a
  return op
},{})

console.log(obj)



在现代浏览器中,您可以 Object.fromEntries

let data = [{q: "question 1",a: "answer 1"},{q: "question 2"}]

const obj = Object.fromEntries(data.filter(s => s.a)
                .map(({q,a}) => [q,a]))

console.log(obj)

关于javascript - 如果在另一个对象数组中找到属性,则映射对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58612935/

相关文章:

java - 未知错误 - 阵列适配器

javascript - Neo4j - 浏览器中的 Cypher 查询与驱动程序之间的区别? (使用 COLLECT、apoc 等)

javascript - 如何在 React Native 中将 PCM 样本从麦克风转换为字节

javascript - Highcharts 更改单个系列的标签文本

javascript - 您编写了哪些有用的自定义 jQuery 选择器?

javascript - Angular : rendering a lot of DOM Elements faster

C 动态指针数组分配。为什么我可以访问超出范围的元素?

Java处理字符串中的逗号

arrays - 如何将 PostgreSQL 时间戳数据类型插入时间戳数组

c++ - 从二维数组 C++ 中提取行或列