在javascript

时间:2018-01-22 12:39:41

标签: javascript arrays object

嘿我需要你的帮助才能在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

1 个答案:

答案 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);