0

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

4

1 回答 1

3

.map()不会改变原始数组。因为您的代码没有捕获返回的值,所以您只是将其丢弃。

使用(名称不佳的)$.grep函数而不是.map(). 多亏了这个invert论点,您甚至不必使用匿名函数;您可以isNaN直接用作谓词。

var filteredArray = $.grep(myArray, isNaN, true);

http://jsfiddle.net/mattball/nzeBZ/

NB isNaN('1')返回false,因为'1'它是一个可以合理强制转换为数字的字符串。如果这不可接受,请使用更好的过滤谓词。但是,您是否真的想要一个数字数组或只是字符串,这有点不清楚'[1, 3, 5]'

于 2012-07-16T13:30:23.143 回答