[英]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.