Javascript 我是否正确使用循环中的Object.keys? getCount=函数(问题){ 变量i,问题计数,值; i=0; 控制台日志(问题); while(i0){ 问题计数++; } } } i++; log(questionCount,'COUNT'); } }; var问题=[ {问题:'示例问题', 选项:[“选项1”、“选项2”], 值:1]}, {问题:'示例问题2', 选项:[‘选项1’、‘选项2、选项3’], 值:2]} ]

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”

基本上,每当一个问题中出现大于0的值时,我都会尝试计数。但是,当我使用console.log时,我会不断返回问题的长度


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;