我有一個 JavaScript 陣列:
const arr = ['a', 'b', 1, 4, 6, 'John', 9, 91];
我只想保留整數并過濾掉字串和字符。有什么辦法嗎?我試過了,typeof()但它不起作用。提前致謝。
uj5u.com熱心網友回復:
您可以使用Array.prototype.filter并使用typeof 運算子過濾掉數字項。
const
arr = ["a", "b", "1", 4, 6, "John", 9, 91],
nums = arr.filter((a) => typeof a === "number");
console.log(nums);
另一種方法
您也可以將專案強制為一個數字。無法強制轉換為數字的字串會導致NaNJS 中的假值,因此會被過濾掉。
const
arr = ["a", "b", 1, 4, 6, "John", 9, 91],
nums = arr.filter(Number);
console.log(nums);
但是請注意,可以強制轉換為 等數字的字串"1"不會"123"被第二種方法過濾掉。
更重要的是,這種方法會過濾掉陣列中的所有零(0, ),就像JS 中的虛假值一樣。"0"0
const
arr = ["1", "4", "6", 0, "0"],
nums = arr.filter(Number);
console.log(nums);
過濾整數
您還可以使用Number.isInteger僅過濾整數
const
arr = ["1", 2, -3, 4.5],
ints = arr.filter(Number.isInteger);
console.log(ints);
但請注意,這種方法不會過濾掉可以表示為整數的數字。
對于可以表示為整數的浮點數,該方法還將回傳 true。來源
const
arr = [1.0, 2.000000000000001, 3.0000000000000001],
ints = arr.filter(Number.isInteger);
console.log(ints);
uj5u.com熱心網友回復:
試試這個:
arr.filter((elem) => Number.isInteger(elem));
output = [1,4,6,9,91]
uj5u.com熱心網友回復:
const arr = ['a', 'b', 1, 4, 6, 'John', 9, 91];
const number = arr.filter(item => typeof item === 'number')
console.log(number )
這里是正確的方法
uj5u.com熱心網友回復:
您還可以使用 for 回圈遍歷陣列值并檢查條件中的數字是否并推入新陣列,這將導致獲取所有數字值。
const arr = ['a', 'b', 1, 4, 6, 'John', 9, 91];
newArr=[];
for(let i=0;i<arr.length;i ){
/* console.log(arr[i]); */
if(Number(arr[i])){
newArr.push(arr[i]);
}
}
console.log(newArr);
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/477494.html
標籤:javascript 数组 筛选
