我对jquery.map函数感到困惑。
我有一个数组说myArray = ["1", 3, "a", 5]
。
我可以使用$.map().get().join(',')
获取[1, 3, 5]
;
$(myArray).map(function() {
if (!isNaN(this)){
return this
}
}).get().join(',');
上面的代码返回["1","3","a","5"]
http://jsfiddle.net/kkgian/khurZ/
TIA
答案 0 :(得分:3)
.map()
不会改变原始数组。因为你的代码没有捕获返回的值,所以你只是把它扔掉了。
使用(命名不当的)$.grep
函数而不是.map()
。感谢invert
参数,您甚至不必使用匿名函数;您可以直接使用isNaN
作为谓词。
var filteredArray = $.grep(myArray, isNaN, true);
http://jsfiddle.net/mattball/nzeBZ/
N.B。 isNaN('1')
返回false
,因为'1'
是一个可以合理强制转换为数字的字符串。如果这是不可接受的,请使用更好的过滤谓词。但是,如果你真的想要一个数字数组,或者只是字符串'[1, 3, 5]'
,有点不清楚。