开发者问题收集

如何在 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