Javascript 基于现有数组和对象构造新的对象数组
可能是犯了一个愚蠢的错误,但我似乎无法理解这一点 基于现有的字符串数组,我想检查它们是否作为对象值存在于我的对象数组中。如果为true,则使用true值将它们推入新数组;如果为false,则也使用false值将它们推入新数组 到目前为止,我的代码示例如下:Javascript 基于现有数组和对象构造新的对象数组,javascript,arrays,object,Javascript,Arrays,Object,可能是犯了一个愚蠢的错误,但我似乎无法理解这一点 基于现有的字符串数组,我想检查它们是否作为对象值存在于我的对象数组中。如果为true,则使用true值将它们推入新数组;如果为false,则也使用false值将它们推入新数组 到目前为止,我的代码示例如下: const answers = [12, 3, 16] const quotes = [ { id: 12, author: 'A'}, { id: 4, author: 'B'}, { id: 16, author: 'C'}, ]
const answers = [12, 3, 16]
const quotes = [
{ id: 12, author: 'A'},
{ id: 4, author: 'B'},
{ id: 16, author: 'C'},
]
这会将对象推送到我的新阵列,一切都很好!问题是当我想添加错误的时候。我试着按照以下方式来做:
answers.forEach((answer) => {
quotes.find((quote) => (quote.id === answer
? checkedQuotes.push({
id: quote.id,
author: quote.author,
correct: true,
})
: checkedQuotes.push({
id: quote.id,
author: quote.author,
correct: false,
})
));
});
returns => [
{id:12, author: 'A', correct: true},
{id:12, author: 'A', correct: false},
{id:12, author: 'A', correct: false}
]
// would expect it to be:
[
{id:12, author: 'A', correct: true},
{id:4, author: 'B', correct: false},
{id:16, author: 'C', correct: true}
]
我在这里遗漏了什么?我认为您需要通过引号而不是答案进行循环,然后查看答案中的引号是否有匹配值
const answers=[12,3,16];
常量引号=[
{id:12,作者:'A'},
{id:4,作者:'B'},
{id:16,作者:'C'},
];
const res=quotes.map(
(quote)=>({…quote,正确:answers.includes(quote.id)})
);
控制台日志(res)代码>这里是一个最小数量循环的答案
使用reduce
从应答数组-{'value':true}
创建一个对象
循环浏览答案,同时检查在第1点中创建的对象中的答案是否正确
const answers=[12,3,16]
常量引号=[
{id:12,作者:'A'},
{id:4,作者:'B'},
{id:16,作者:'C'},
]
const answersObj=answers.reduce(函数(obj,answer){
obj[答案]=正确;
返回obj;
}, {});
对于(引用的报价){
quote['correct']=answersObj[quote.id]| | false;
}
console.log(引号)
answers.forEach((answer) => {
quotes.find((quote) => (quote.id === answer
? checkedQuotes.push({
id: quote.id,
author: quote.author,
correct: true,
})
: checkedQuotes.push({
id: quote.id,
author: quote.author,
correct: false,
})
));
});
returns => [
{id:12, author: 'A', correct: true},
{id:12, author: 'A', correct: false},
{id:12, author: 'A', correct: false}
]
// would expect it to be:
[
{id:12, author: 'A', correct: true},
{id:4, author: 'B', correct: false},
{id:16, author: 'C', correct: true}
]