簡體   English   中英

從數組中過濾掉字符串

[英]Filter out Strings from an Array

我正在嘗試解決我在 Javascript 中遇到的問題,我對 JS 完全陌生。 這是我的代碼:

    function filterOutStringfromArr(array) {
        var arr = []
        for (var i = 0; i < array.length; i++) {
            if (typeof array[i] === 'number') {
                arr[i] = array[i]
            }
        }
        console.log(arr)
    }
    filterOutStringfromArr([1,2,'A','B',123])

當我運行它時,我得到這個結果: [ 1, 2, <2 empty items>, 123 ]

我知道發生這種情況是因為我的數組的長度是 5。但是我想 append 只是將過濾后的值添加到空數組arr[] 我怎樣才能做到這一點?

function filterOutStringfromArr(array) {
    var arr = []
    for (var i = 0; i < array.length; i++) {
        if (typeof array[i] === 'number') {
          arr.push(array[i])
        }
    }
    console.log(arr)
}
filterOutStringfromArr([1,2,'A','B',123])

很不錯的MDN鏈接

您應該使用將 append push送到數組末尾。 通過將找到的元素插入到點i中,您將從索引 3 變為 5,因此是空元素。

我建議使用Array.prototype.push()方法。

function filterOutStringsfromArray(array) {
    var arr = [];
    for (let i = 0; i < array.length; i++) {
        if (typeof array[i] === 'string') {
          arr.push(array[i]);
        }
    }
    return arr;
}

filterOutStringfromArr([5, 2, 'h', 2, 's', 2]) // Expected Output: ['h', 's']

過濾方法將解決您的問題。

 function filterOutStringfromArr(array) { const newArray = array.filter(item => { if (typeof item === 'number') { return item; } }) console.log(newArray); } filterOutStringfromArr([1,2,'A','B',123])

就我個人而言,我只會使用普通的陣列濾波器 function 並測試條件。 讓 native array.filter function 為您完成工作。 下面將過濾數組並返回一個新數組(不修改現有數組)。

 function filterToArrayOfNumbers(arrayElement) { return typeof arrayElement === 'number'; } console.log([1,2,'A','B',123].filter(filterToArrayOfNumbers));

arr[i] = array[i]  // <------------  your issue

i仍在遞增,因此當您查看最后一個數字123 (索引 4)時,它將在索引 4 處設置新數組(將 2 和 3 留空)

而不是明確設置它,你可以做arr.push(array[i])

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/push

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM