有人可以向我解释为什么我的sum2变量的值为0吗?我期望它是1。

var colors = [1,2,3,4,5];
var DEFINITIONS = [[1],[2],[3]];

function getAttributes(colors){
    var sumSaturated = 0;
    var sum2 = 0;

    colors.forEach(function(hsl) {
        if(hsl>2){
            sumSaturated ++;
            for(var x = 0; x<DEFINITIONS.length; x++){
                if(DEFINITIONS[x]===hsl){
                    sum2++;
                }
            }
        }
    });
    console.log(sum2, sumSaturated);
}

getAttributes(colors);


谢谢!

最佳答案

这是因为您正在将似乎​​是数字的hsl与数组进行比较。您实际上是在这样做:

hsl === [1]
hsl === [2]
hsl === [3]


如果要与单个数字进行比较,请重新定义DEFINITIONS

var DEFINITIONS = [1, 2, 3];


或者与其中的第一个元素进行比较

DEFINITIONS[x][0] === hsl

关于javascript - 给定条件更新变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35350692/

10-09 05:12