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