Middle
C'è un array di oggetti con un campo value. Devo creare un nuovo array contenente solo i valori numerici di questi oggetti (senza stringhe). Come si fa e come si verifica se un valore è un numero?
sobes.tech AI
Risposta dell'AI
Чтобы из массива объектов получить новый массив, содержащий только числовые значения поля value, можно использовать методы filter и map в JavaScript.
Проверить, что значение является числом, можно с помощью функции typeof и проверки на NaN:
const arr = [
{ value: 10 },
{ value: '20' },
{ value: 30 },
{ value: 'abc' },
{ value: 40 }
];
const numbers = arr
.map(obj => obj.value)
.filter(val => typeof val === 'number' && !isNaN(val));
console.log(numbers); // [10, 30, 40]
Здесь:
mapизвлекает полеvalueиз каждого объекта.filterоставляет только те значения, которые имеют типnumberи не являютсяNaN.
Если нужно также учитывать числовые строки, можно использовать Number и проверять результат:
const numbers = arr
.map(obj => Number(obj.value))
.filter(val => !isNaN(val));
Но в вопросе указано без строк, поэтому первый вариант подходит.