2016-06-21 49 views
-2

刪除元素的特定類型(字符串,整數)隨着array1使用Javascript - 從數組

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

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

我怎樣才能(在新,或相同的陣列):

array2 = [[1],[2]] 

注意我的array1(實際上)有很多元素。

感謝。

+1

而你在哪裏卡住,你有什麼嘗試? –

+0

array1 [0] [0]是你好 –

+1

循環檢查數組,檢查是否typeof [x] [y] ===「String」,如果是,則刪除它 –

回答

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);

+0

非常感謝你Rayon =)真正快速的回答,完美的工作。 – ShEp

2

你可以使用mapfilter功能

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

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

 
console.log(array2);

0

這不是最優雅的解決方案,但我在jsconsole中測試它,它工作。您還可以在開發工具測試

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);

注:這需要打字稿

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") 
0

循環遍歷數組。檢查項目是否是數字。如果是的話,將它推到一個新的陣列,並將它拼接出舊

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

循環數組並移除字符串。拼接與位置(0你的情況)和數字內容作品(1元刪除)

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

結果:[1] [2]