如何在 Javascript 中对数组进行过滤
2021-06-18
653
我是 Javascript 新手, 我想创建一个函数,该函数接受一个非负整数和字符串数组,并返回一个不包含字符串的新数组。
示例
filterArray([1, 2, "aasf", "1", "123", 123])
➞
[1, 2, 123]
我试过这个代码:
function filterArray(arr) {
var j=0;
var numArr;
for (let i=0;i<length.arr;i++)
{
if (typeof arr[i] ==="number")
{
numArr[j]=arr[i];
j++;
}
}
return numArr
}
console.log(filterArray([1, 2, "aasf", "1", "123", 123]));
但我没有运行我的代码,有人能帮我吗?
3个回答
使用过滤方法 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter
function filterArray(arr) {
return arr.filter(x => typeof x === "number");
}
console.log(filterArray([1, 2, "aasf", "1", "123", 123]));
Martin Meli
2021-06-18
1)
首先,循环应运行到
arr.length
而不是
length.arr
。
2)
无需使用另一个计数器变量
j
,您可以简单地使用数组作为
var numArr = [];
并且您可以使用
push
方法在末尾向数组中添加元素。
function filterArray(arr) {
var numArr = [];
for (let i = 0; i < arr.length; i++) {
if (typeof arr[i] === "number") {
numArr.push(arr[i]);
}
}
return numArr;
}
console.log(filterArray([1, 2, "aasf", "1", "123", 123]))
// ➞ [1, 2, 123]
其他替代方案
function filterArray(arr) {
// return arr.filter((el) => +el === el);
// or
// return arr.filter((el) => typeof el !== `string`);
// or
return arr.filter(el => typeof el === "number");
}
console.log(filterArray([1, 2, "aasf", "1", "123", 123]));
DecPK
2021-06-18
您可以使用
Array.filter()
根据给定的条件过滤元素。
function filterArray(arr) {
return arr.filter(el => typeof el === 'number');
}
console.log(filterArray([1, 2, "aasf", "1", "123", 123]));
Nicolae Maties
2021-06-18