我明白了:
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];
我该怎么做?
答案 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]);
}
}
希望有所帮助