Javascript 我是否正确使用循环中的Object.keys? getCount=函数(问题){ 变量i,问题计数,值; i=0; 控制台日志(问题); while(i0){ 问题计数++; } } } i++; log(questionCount,'COUNT'); } }; var问题=[ {问题:'示例问题', 选项:[“选项1”、“选项2”], 值:1]}, {问题:'示例问题2', 选项:[‘选项1’、‘选项2、选项3’], 值:2]} ]
基本上,每当一个问题中出现大于0的值时,我都会尝试计数。但是,当我使用console.log时,我会不断返回问题的长度Javascript 我是否正确使用循环中的Object.keys? getCount=函数(问题){ 变量i,问题计数,值; i=0; 控制台日志(问题); while(i0){ 问题计数++; } } } i++; log(questionCount,'COUNT'); } }; var问题=[ {问题:'示例问题', 选项:[“选项1”、“选项2”], 值:1]}, {问题:'示例问题2', 选项:[‘选项1’、‘选项2、选项3’], 值:2]} ],javascript,Javascript,基本上,每当一个问题中出现大于0的值时,我都会尝试计数。但是,当我使用console.log时,我会不断返回问题的长度 console.log(value)显示的是索引值0和1,而不是value属性的实际数目。正确查看代码后,最好在处理对象数组时使用标准的for循环 while循环也是不必要的 考虑下面的代码片段 (函数(){ var问题=[ { 问题:"举例问题",, 选项:[ “选项1”, “选项2” ], 价值:1 }, { 问题:‘示例问题2’, 选项:[ “选项1”, “方案2”
console.log(value)显示的是索引值0和1,而不是value属性的实际数目。正确查看代码后,最好在处理对象数组时使用标准的
for
循环
while循环也是不必要的
考虑下面的代码片段
(函数(){
var问题=[
{
问题:"举例问题",,
选项:[
“选项1”,
“选项2”
],
价值:1
},
{
问题:‘示例问题2’,
选项:[
“选项1”,
“方案2”,
“选项3”
],
价值:2
}
],
getCount=函数(问题){
var i=0,
问题计数=0;
对于(var i=0;i0){
问题计数++;
}
}
}
返回问题计数;
};
console.info(getCount(问题));
}());
使用数组提供的方法
getCount = function(questions) {
var i, questionCount, value;
i = 0;
console.log(questions);
while (i < questions.length) {
questionCount = 0;
for (value in questions) {
if (questions.hasOwnProperty(value)) {
console.log(value);
if (value > 0) {
questionCount++;
}
}
}
i++;
console.log(questionCount, 'COUNT');
}
};
var questions = [
{question : 'example question',
option : ['option 1' , 'option 2'],
value: 1]},
{question : 'example question 2',
option : ['option 1' , 'option 2, option 3'],
value: 2]}
]
问题的长度为2,并且两个问题的值都大于0,因此您将返回2否?当我更改数据时,它似乎在计算索引值,而不是value属性中的实际数字。在您的示例中,“问题”是数组,而不是对象。所以for..in循环在数组上循环,这是多余的,因为外部while循环已经在这样做了。如果您只想检查每个对象中的值键是否大于0,则根本不需要for..in,只需执行If(问题[i].value>0)…控制台会向您显示索引值,因为for in循环在JavaScript中就是这样工作的。对于每个迭代,它将索引变量的值(本例中为“值”)设置为对象下一个属性的名称。JavaScript数组实际上只是一个属性名带有数字的对象。因此,每个数组都有一个名为“0”的属性和另一个名为“1”的属性(以及使用
hasOwnProperty
筛选出的一些其他属性)。这就是您在控制台中看到的。
return questions.filter(function (question) {
//filter question having positive value defined
return !! question.value && question.value > 0;
}).length;