У меня есть строка, содержащая сочетание символов и цифр. Я хочу отделить числа от строки и сохранить их в массиве. До сих пор мне удавалось отделять строки и числа и помещать их в массив, а затем получать только числа, но данные строкового типа — NaN. Я не могу избавиться от значений NaN из массива.
Пока мой код выглядит так:
arrayList = "abcd_456_yasdb_382_h_83_2";
new_arrayList = arrayList.split('_');
console.log(new_arrayList); // Output : [ 'abcd', '456', 'yasdb', '382', 'h', '83', '2' ]
new_arrayList = new_arrayList.map(Number);
console.log(new_arrayList); // Output : [ NaN, 456, NaN, 382, NaN, 83, 2 ]
onlyNumArray = []
for(i =0; i<new_arrayList.length; i++) {
// console.log(new_arrayList[i]);
if(typeof (new_arrayList[i]) === "number" && typeof(new_arrayList[i]) != NaN) {
onlyNumArray.push(new_arrayList[i])
}
else {
console.log("Not a number")
}
}
console.log(onlyNumArray) // Output : [ NaN, 456, NaN, 382, NaN, 83, 2 ]
Output = [ NaN, 456, NaN, 382, NaN, 83, 2 ]
Expected Output = [456, 382,83,2]
1
Cpt Kitkat
26 Янв 2022 в 17:47
3 ответа
Вы можете использовать метод array.filter()
и сделать что-то вроде этого:
const unfilteredArray = [ NaN, 456, NaN, 382, NaN, 83, 2 ]
const numbersArray = unfilteredArray.filter(Number)
// Output : [ 456, 382, 83, 2 ]
1
Sandrow
26 Янв 2022 в 17:54
2
.filter(Number)
может быть проблематичным, когда задействован 0
: [83,2,0].filter(Number)
-> [83,2]
Passerby
26 Янв 2022 в 18:01
const newArrayList = arrayList.split('_').filter(element => {
return Number.parseInt(element);
}).map(element => {
return Number.parseInt(element)
});
0
Alexandru Oriean
26 Янв 2022 в 18:02
input = 'abcd_456_yasdb_382_h_83_2';
array = [...input.matchAll(/\d+/g)].map(a => parseInt(a[0]));
console.log(array); // [456, 382, 83, 2]
0
sqram
26 Янв 2022 в 18:07
Похожие вопросы
Новые вопросы
javascript
По вопросам программирования на ECMAScript (JavaScript / JS) и его различных диалектах / реализациях (кроме ActionScript). Включите все соответствующие теги в свой вопрос; например, [node.js], [jquery], [json] и т. д.
typeof NaN
возвращает 'число', поэтому вы можете заменить это условие на!isNaN(new_arrayList[i])
.