嘿我需要你的帮助才能在javascript中转换数组。请查看我的输出数据:
Answers: {
'0': { '0': 'ans 1' },
'1': { '0': 'ans 11', '1': 'ans 22', '2': 'ans 33' }
}
correctAnswers: {
'1': { '0': true, '1': true }
}
我想如果索引不匹配集false
,那么我希望以下数组:
convertArray = [[false], [true, true, false]]
对于此任务,我使用以下功能
var choiceBoolean = [];
for(corrAns in Answers){
let tempArr = [];
Object.keys(Answers[corrAns]).forEach(k =>
tempArr[k] = correctAnswers[corrAns][k] || false)
choiceBoolean.push(Array.apply(null, tempArr).map(Boolean))
}
很遗憾,我收到错误TypeError: Cannot read property '0' of undefined
答案 0 :(得分:2)
您可以通过检查正确答案,将answer
中的键映射到内键中的另一个映射数组。
此解决方案可以检查是否存在正确的答案,然后检查内部密钥。
correct[k] && correct[k][l] || false
^^^^^^^^^^ check first if exists
^^^^^^^^^^^^^ take a truthy value
^^^^^ if not take false
var answers = { 0: { 0: 'ans 1' }, 1: { 0: 'ans 11', 1: 'ans 22', 2: 'ans 33' } },
correct = { 1: { 0: true, 1: true } },
result = Object
.keys(answers)
.map(k => Object.keys(answers[k]).map(l => correct[k] && correct[k][l] || false));
console.log(result);