如何使用jquery .map去除isNaN元素

时间:2012-07-16 13:26:38

标签: jquery

我对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

1 个答案:

答案 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]',有点不清楚。