Javascript - 从数组中删除元素的特定类型(string,int)

时间:2016-06-21 19:14:39

标签: javascript arrays

使用array1

array1 = [["hello",1],["bye",2]]

顺便array1[0]返回["hello",1]而不是["hello"]

我如何获得(在一个新的或相同的数组中):

array2 = [[1],[2]]

注意我的array1(实际上)有很多元素。

感谢。

7 个答案:

答案 0 :(得分:2)

  

使用Array#map

var array1 = [
  ["hello", 1],
  ["bye", 2]
];
var array2 = array1.map(function(item) {
  return [item[1]];
});
console.log(array2);

或仅检索Numbers

var array1 = [
  ["hello", 1],
  ["bye", 2]
];
var array2 = array1.map(function(item) {
  return item.filter(function(val){ return isNaN(val); });
});
console.log(array2);

答案 1 :(得分:2)

您可以使用mapfilter函数



var array1 = [ ["hello", 1], ["bye", 2] ]

var array2 = array1.map(a => a.filter(b => typeof b != 'string'))

console.log(array2);




答案 2 :(得分:0)

https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/map

如果你有ES5那么

array1.map(function(x) { return x[1] })

答案 3 :(得分:0)

这不是最优雅的解决方案,但我在jsconsole中进行了测试,它确实有效。您也可以在Dev Tools中测试它

var array1 = [["hello",1],["bye",2]]
var numbers = [];

for (var i = 0; i < array1.length; i++) { 
    numbers.push(array1[i].filter((a) => +(a))) 
}

console.log(numbers);

注意:这需要打字稿

答案 4 :(得分:0)

function selectElements(array, type) {
    var result = [];
     for (var i = 0; i < array.length; i++) {
         var arr = [];
         for (var j = 0; j < array[i].length; j++) {
              if (typeof array[i][j] === type) {
                  arr.push(array[i][j]);
              }
         }
         result.push(arr)
    }
   return result;
}

用法:

var array2 = selectElements(yourArray, "string")

答案 5 :(得分:0)

循环遍历数组。检查项目是否为数字。如果是这样,将其推送到一个新阵列,并将其拼接出旧的

for (var i = 0; i < array1.length; i++) {
    if (typeof array1[i] === 'number') {
        newArray.push(array1[i]);
        array1.splice(i, 1);
    {
}

答案 6 :(得分:0)

循环数组并删除字符串。 Splice使用位置(在您的情况下为0)和数字元素(要删除的1个元素)

for (var i=0; i < array1.length; i++){ array1[i].splice(0,1); }

结果:[[1] [2]]