筛选数组以按数据类型对项目进行分组

时间:2018-01-19 12:41:25

标签: javascript arrays

我明白了:

var arr= ["three", "2", "five", "ten", "111", 1, 2, "forty", "33", 33];

我需要它是2个新阵列 一个只有数字,另一个只有字符串

像这样:

var strArr = ["three", "2", "five", "ten", "111","forty", "33"];
var numArr = [1, 2, 33];

我该怎么做?

3 个答案:

答案 0 :(得分:6)

您可以将typeof 运算符filter方法结合使用,该方法接受回调函数作为参数。

  

filter()方法创建一个包含所有传递元素的新数组   由提供的函数实现的测试。

var arr= ["three", "2", "five", "ten", "111", 1, 2, "forty", "33", 33];
var numbers = arr.filter(function(item){
  return typeof item == 'number';
});
var strings = arr.filter(function(item){
  return typeof item == 'string';
});
console.log(numbers);
console.log(strings);

您可以使用arrow功能来解决问题。

['number', 'string'].map(i => arr.filter(a => typeof a == i));

答案 1 :(得分:2)

var arr= ["three", "2", "five", "ten", "111", 1, 2, "forty", "33", 33];
var num=[];
var str=[];
for(i=0;i<arr.length;i++){
    if(arr[i].includes('"') || arr[i].includes("'"))
           str.push(arr[i]);
    else
           num.push(arr[i]);
}

答案 2 :(得分:1)

你需要使用create一个函数来检查你给出的是一个字符串还是一个整数,并将值推送到正确的数组。

我没有测试下面的代码,但它应该是一个很好的起点。

var arr= ["three", "2", "five", "ten", "111", 1, 2, "forty", "33", 33];

var strArr = [];
var numArr = [];

var arrayLength = arr.length();
// iterates trough the array
for (i; i < arr.length(); i++)
{
    //Check if the given value in the array is string
    if (typeof arr[i] === 'string')
    {
        // adds the value you are checking to the strArr
        strArr.push(arr[i]);
    }

    //Check if the given value in the array is integer
    if (typeof arr[i] === 'number' && isFinite(value))
    {
        // adds the value you are checking to the numArr
        numArr.push(arr[i]);
    }
}

希望有所帮助