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]}
]
基本上,我试图在每次问题中出现大于0的值时进行计数。但是,当我在console.log时,我会继续回到似乎问题的长度。
console.log(value)显示索引值0和1,而不是value属性的实际数字。
答案 0 :(得分:0)
正确查看代码,最好在处理对象数组时使用标准for
循环。
while循环也是不必要的。
请考虑以下代码段。
(function(){
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
}
],
getCount = function(questions) {
var i = 0,
questionCount = 0;
for (var i = 0; i < questions.length; i++) {
if (questions[i].hasOwnProperty('value')) {
if (questions[i].value > 0) {
questionCount++;
}
}
}
return questionCount;
};
console.info(getCount(questions));
}());
希望能帮到你!
答案 1 :(得分:0)
使用Array提供的filter()方法
return questions.filter(function (question) {
//filter question having positive value defined
return !! question.value && question.value > 0;
}).length;