我有一个问题,我将表单从客户端发送到服务器并获取对象,该复选框为true,这是问题。例如'0': true, '3':true
我希望我的数组看起来[true,false,false,true]
,但现在我得到这样的数组[true, true]
我使用map
。因此,在对象true
之间,我会插入false
。请查看我的代码:
var correctAns = [];
var quizCorrectAnswer =
{ '0': { '0': true },
'1': { '0': true, '3': true },
'2': { '2': true }
}
for(correct in quizCorrectAnswer){
correctAns.push(Object.keys(quizCorrectAnswer[correct]).map((k) =>
quizCorrectAnswer[correct][k]))
}
我想收到以下数组:0: [true], 1: [true, false, false, true], 2: [false, false, true]
但现在我得到0: [true], 1: [true, true], 2: [true]
答案 0 :(得分:1)
这应该是你要找的东西:
var correctAns = {};
var quizCorrectAnswer =
{ '0': { '0': true },
'1': { '0': true, '3': true },
'2': { '2': true }
}
Object.keys(quizCorrectAnswer).forEach((question) => {
correctAns[question] = Object.keys(quizCorrectAnswer[question]).reduce((prev, key) => {
while (prev.length < key) {
prev.push(false);
}
prev.push(true);
return prev;
}, []);
});
console.log(correctAns);
如果您希望correctAns
只是一个数组,请改用:
var quizCorrectAnswer =
{ '0': { '0': true },
'1': { '0': true, '3': true },
'2': { '2': true }
}
var correctAns = Object.keys(quizCorrectAnswer).map((question) => {
return Object.keys(quizCorrectAnswer[question]).reduce((prev, key) => {
while (prev.length < key) {
prev.push(false);
}
prev.push(true);
return prev;
}, []);
});
console.log(correctAns);
答案 1 :(得分:1)
问题是,您只使用给定的答案映射返回数组的键。但是你需要一个带有空洞和错误值的数组。
要使用数组方法迭代稀疏数组,您需要将其转换为没有稀疏元素的数组,然后映射布尔值。
var quizCorrectAnswer = { 0: { 0: true }, 1: { 0: true, 3: true }, 2: { 2: true } },
correctAns = [],
correct,
temp;
for (correct in quizCorrectAnswer) {
temp = [];
Object
.keys(quizCorrectAnswer[correct])
.forEach(k => temp[k] = quizCorrectAnswer[correct][k])
correctAns.push(Array.apply(null, temp).map(Boolean));
}
console.log(correctAns);
&#13;
.as-console-wrapper { max-height: 100% !important; top: 0; }
&#13;
答案 2 :(得分:0)
Array.from
您可以使用5
将对象转换为数组。您可以使用Object.keys(obj).length
csvdir
的静态长度
答案 3 :(得分:-1)
这是未出现的键和值的问题。
在关于键'1'的quizCorrectAnswer
变量值中,只有'0'和'3'键。
该值中未定义“1”或“2”键和值。
并且Javascript map
函数将现有键与值匹配,因此您只能获得{1}}关于'1'键(因为该值中只有2个键)。
因此,要获得所需的结果,您必须更改[true, true]
值,如下所示。
quizCorrectAnswer