Middle
Hay un array de objetos con un campo value. Necesito crear un nuevo array que contenga solo los valores numéricos de estos objetos (sin cadenas). ¿Cómo hacerlo y cómo verificar si un valor es un número?
sobes.tech AI
Respuesta de la IA
Чтобы из массива объектов получить новый массив, содержащий только числовые значения поля 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));
Но в вопросе указано без строк, поэтому первый вариант подходит.