给定条件更新变量

时间:2016-02-11 21:45:52

标签: javascript variables

有人可以向我解释为什么我的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);

谢谢!

2 个答案:

答案 0 :(得分:2)

这是因为您将hsl(看起来是一个数字)与数组进行比较。你实际上是这样做的:

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

如果您想与个别数字进行比较,请重新定义DEFINITIONS

var DEFINITIONS = [1, 2, 3];

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

DEFINITIONS[x][0] === hsl

答案 1 :(得分:1)

DEFINITIONS是一个数组数组。你需要if(DEFINITIONS[x][0]===hsl){

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][0]===hsl){
                    sum2++;
                }
            }
        }
    });
    console.log(sum2, sumSaturated);
}

getAttributes(colors);