Как отделить свойства с примитивом number от остальных в объекте?
Есть объект, в нём свойства разных примитивов. Как создать объект содержащий только свойства примитива Number?
let salaries = {
worker0: 5040,
worker1: 6400,
worker2: 3000,
name0: "Mike",
worker3: 2100,
worker4: 1300,
name1: "Jack"
worker5: 600,
}
Ответы (2 шт):
Автор решения: T0xee.n17
→ Ссылка
Можно использовать Object.entries чтобы превратить поля объекта в массивы, затем отфильтровать их, используя typeof
let salaries = {
worker0: 5040,
worker1: 6400,
worker2: 3000,
name0: "Mike",
worker3: 2100,
worker4: 1300,
name1: "Jack",
worker5: 600,
}
// Поля объекта как массивы
const entries = Object.entries(salaries)
// Массив содержащий только пары ключ-число
const numbers = entries.filter(([key, value]) => typeof value === 'number')
const numbersObj = Object.fromEntries(numbers)
console.log(numbersObj)
Автор решения: SwaD
→ Ссылка
Выбрать все ключи со значениями из объекта, где значения имеют тип number
Без мутирования исходного объекта
let salaries = {
worker0: 5040,
worker1: 6400,
worker2: 3000,
name0: "Mike",
worker3: 2100,
worker4: 1300,
name1: "Jack",
worker5: 600,
}
function doNumber(obj) {
const res = {};
for (let i in obj) {
if (typeof obj[i] === 'number') res[i] = obj[i];
}
return res;
}
console.log(doNumber(salaries))
С мутированием исходного объекта
let salaries = {
worker0: 5040,
worker1: 6400,
worker2: 3000,
name0: "Mike",
worker3: 2100,
worker4: 1300,
name1: "Jack",
worker5: 600,
}
for (let i in salaries) {
if (typeof salaries[i] !== 'number') delete salaries[i];
}
console.log(salaries)