Как создать цикл forEach для элементов внутри объекта, который находится внутри массива?

const array = [
  {
    username: "john",
    team: "red",
    score: 5,
    items: ["ball", "book", "pen"]
  },
  {
    username: "becky",
    team: "blue",
    score: 10,
    items: ["tape", "backpack", "pen"]
  },
  {
    username: "susy",
    team: "red",
    score: 55,
    items: ["ball", "eraser", "pen"]
  },
  {
    username: "tyson",
    team: "green",
    score: 1,
    items: ["book", "pen"]
  },

];

Я должен добавить! для каждого имени пользователя

0
Zafar Norov 2 Мар 2021 в 16:18

4 ответа

Лучший ответ

Поскольку это multidimensional array, вы должны вызвать index для username, чтобы добавить! знак

const array = [
  {
    username: "john",
    team: "red",
    score: 5,
    items: ["ball", "book", "pen"]
  },
  {
    username: "becky",
    team: "blue",
    score: 10,
    items: ["tape", "backpack", "pen"]
  },
  {
    username: "susy",
    team: "red",
    score: 55,
    items: ["ball", "eraser", "pen"]
  },
  {
    username: "tyson",
    team: "green",
    score: 1,
    items: ["book", "pen"]
  },

];

array.forEach(element => console.log("!"+element["username"]));
0
elfantoche 2 Мар 2021 в 13:23

Ты можешь сделать что-то вроде этого

array.forEach((item) => {
  item.username = "!"+ item.username
})
0
Yassir Hartani 2 Мар 2021 в 13:22

Есть два способа изменить значение ключа внутри объекта. Вы можете сделать это на месте и изменить существующий объект или создать копию.


Если вы хотите изменить элементы на месте:

const array = [
  { username: "john"  , team: "red"   , score:  5 , items: [ "ball", "book", "pen"     ]},
  { username: "becky" , team: "blue"  , score: 10 , items: [ "tape", "backpack", "pen" ]},
  { username: "susy"  , team: "red"   , score: 55 , items: [ "ball", "eraser", "pen"   ]},
  { username: "tyson" , team: "green" , score:  1 , items: [ "book", "pen"             ]},
];

array.forEach(item => item.username = `!${item.username}`);

console.log(array);
.as-console-wrapper { top: 0; max-height: 100% !important; }

Если вы хотите создать копию:

const array = [
  { username: "john"  , team: "red"   , score:  5 , items: [ "ball", "book", "pen"     ]},
  { username: "becky" , team: "blue"  , score: 10 , items: [ "tape", "backpack", "pen" ]},
  { username: "susy"  , team: "red"   , score: 55 , items: [ "ball", "eraser", "pen"   ]},
  { username: "tyson" , team: "green" , score:  1 , items: [ "book", "pen"             ]},
];

const deepCopyAndModify = array.map(item => ({
  ...item,
  username: `!${item.username}`,
  items: [...item.items]
}));

console.log(deepCopyAndModify);
.as-console-wrapper { top: 0; max-height: 100% !important; }
0
Mr. Polywhirl 2 Мар 2021 в 13:25

Вы можете использовать Javascript forEach для получения результата в цикле. Проверьте приведенный ниже код:

const JsonArr = [
  {
    username: "john",
    team: "red",
    score: 5,
    items: ["ball", "book", "pen"]
  },
  {
    username: "becky",
    team: "blue",
    score: 10,
    items: ["tape", "backpack", "pen"]
  },
  {
    username: "susy",
    team: "red",
    score: 55,
    items: ["ball", "eraser", "pen"]
  },
  {
    username: "tyson",
    team: "green",
    score: 1,
    items: ["book", "pen"]
  },

];

JsonArr.forEach(function(data, index) {
  data.username = '!' + data.username;
  console.log(data);
});
0
Amit Saini 2 Мар 2021 в 13:36