控制台调试向我显示该数组是ex。 [“2”],但我需要[2]。
为什么施展不工作?
function filterElements(deals) {
var result = deals,
categories= $('#deals-categories').data('current_category');
if (categories != undefined && categories.length > 0) {
for (var i; i < categories.length; i++) {
categories[i] = parseInt(categories[i]);
}
console.log(categories, 'cats');
result = $.grep(result, function(e) {
return $.inArray(e.category_id, categories) != -1;
});
}
return result;
}
答案 0 :(得分:4)
您需要在循环声明中初始化var i = 0
。
完整代码清理:
function filterElements(deals) {
var result = deals,
categories = $('#deals-categories').data('current_category');
if (categories && categories.length) {
for (var i=0; i<categories.length; i++) {
categories[i] = parseInt(categories[i], 10);
}
console.log(categories, 'cats');
result = $.grep(result, function(e) {
return $.inArray(e.category_id, categories) !== -1;
});
}
return result;
}
答案 1 :(得分:0)
使用categories[i] * 1
投射
parseInt
有时会以一种意想不到的方式运作:)
parseInt("010")
将在某些浏览器中返回8,在其他浏览器中返回10:http://www.w3schools.com/jsref/jsref_parseInt.asp
答案 2 :(得分:0)
var strings = ["1", "2", "3"];
var valueAsInt = 0;
for(var i = 0; i < strings.length; i++){
valueAsInt = parseInt(strings[i]);
if(typeof(valueAsInt) == 'number'){
alert('Is an integer');
}
}
消息'Is an integer'显示三次。我认为在你的代码中解析器可以正常工作,但也许以后,通过与其他字符串比较,或者可能是一些串联,将值转换为字符串。