У меня есть массив объектов, и я хотел бы изменить значение, если тип является числом - PullRequest
0 голосов
/ 13 июля 2020
• 1000 чек и поменяйте его на 23, 3, 8 и т.д. c.
const people = [
    {name: 'John', age: 23, sex: "male"}, 
    {name: 'Andrew', age: 3, sex: "male"}, 
    {name: 'Peter', age: 8, sex: "male"}, 
    {name: 'Hanna', age: 14, sex: "male"}, 
    {name: 'Adam', age: 37, sex: "male"}];


let indVals;

people.forEach(function(arr) {
    indVals = Object.values(arr);
    console.log('Individual values: ',indVals);
    for(let val of indVals) {
        if ( typeof val === "number") {
            val = "$" + val;
        }
    }
});

Ответы [ 3 ]

1 голос
/ 13 июля 2020

Вы можете map массив people и условно изменить значение свойства в объекте. Обратите внимание, что использование map даст вам новый массив.

const people = [
    {name: 'John', age: 23, sex: "male"}, 
    {name: 'Andrew', age: 3, sex: "male"}, 
    {name: 'Peter', age: 8, sex: "male"}, 
    {name: 'Hanna', age: 14, sex: "male"}, 
    {name: 'Adam', age: 37, sex: "male"}];
    
    
const result = people.map(obj => {
  return Object.fromEntries(Object.entries(obj).map(([k, v]) => {
   return (typeof v === 'number') ? [k, `$${v}`] : [k, v];
  }));
});

console.log(result)
1 голос
/ 13 июля 2020

Так как op заявил, что имена свойств неизвестны. Вам нужно использовать ключи для получения свойств, затем проверить тип и затем обновить значение с помощью ключа.

 const people = [
{name: 'John', age: 23, sex: "male"}, 
{name: 'Andrew', age: 3, sex: "male"}, 
{name: 'Peter', age: 8, sex: "male"}, 
{name: 'Hanna', age: 14, sex: "male"}, 
{name: 'Adam', age: 37, sex: "male"}];

people.forEach(obj=> {
   Object.keys(obj).forEach(key=>{   
    if (typeof obj[key] === "number") {
      obj[key] = "$" + obj[key];
    }
  });
});

console.log(people);
0 голосов
/ 13 июля 2020

res = people.map((elem) => {
    for(let key in elem){
        if(typeof elem[key] == 'number'){
            elem[key] += '$';
        }
    }
    return elem;
})
...