我开始学习js,所以我对此很新。我的问题是: 我有一个数组,例如:
var firstArray = [1, 2, "Blue", "Yellow", 5, "Orange"];
然后我需要创建一个新数组(比如secondArray
),您将在其中移动firstArray
中的所有 int 值。经过一些研究,我发现isNaN
将是我所需要的。有人可以试着解释一下我将如何实现这一目标吗?
谢谢。
答案 0 :(得分:3)
使用
Array#filter
,filter()
方法创建一个新数组,其中包含通过所提供函数实现的测试的所有元素。
var firstArray = [1, 2, "Blue", "Yellow", 5, "Orange"];
var op = firstArray.filter(Number);
console.log(op);

在每次迭代中,每个项目都会通过Number
传递,无法转换为Number
的值将返回NaN
,这是falsey
值,它将是排除。
修改:如canon所述,.filter(Number)
如果存在于数组中,也会丢弃0
,因为Number(0) === 0 ==> "falsey value"
如果您想在过滤数组中保留0
值,请使用isNaN(Number(item))
中的Test Function
var firstArray = [1, 2, "Blue", "Yellow", 5, "Orange", 0];
var op = firstArray.filter(function(item) {
return !isNaN(Number(item));
});
console.log(op);

答案 1 :(得分:0)
上面的方法更酷,更确定!这里使用的是你要求的isNaN:
使用isNaN: JSBIN
function cut(arr){
var ints = [];
var others = [];
for (var i = 0; i < arr.length; i++) {
if (isNaN(arr[i])) {
others.push(arr[i]);
} else {
ints.push(arr[i]);
}
}
console.log(others);
console.log(ints);
}