这是我的情况。
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/