JavaScript - 新しいオブジェクトを配列にプッシュすると、既存のオブジェクトが変更されます

okwaves2024-01-25  12

users 内のすべてのユーザー オブジェクトに対して、ユーザーの特定のプロパティがマップされ、互いに離れた新しいオブジェクトとして player 配列にプッシュされる .forEach() を作成しようとしています。

しかし、私の試みでは、ユーザーのすべての結果が 1 つのオブジェクトにスタックされます。各 .push() がユーザーごとに新しいオブジェクトを作成することを確認するにはどうすればよいですか

私が欲しいもの

[
  {
    name: 'Johnny',
    id: '123456789',
    lives: 3
  },

  {
    name: 'Timmy',
    id: '987654321',
    lives: 3
  },
]

得られるもの

[
  {
    name: [ 'Johnny', 'Timmy' ],
    id: [ '123456789', '987654321' ],
    lives: 3
  }
]

コード

let players = []
const users = {...}
                
users.forEach(user => {
   let username = user.map(user => user.username)
   let id = user.map(user => user.id)

   players.push({ name: username, id: id, lives: 3 })
})
                
console.log(players)

1

.map() は新しい配列を返します。

– ダイダロス

2020 年 9 月 5 日 1:07



------------------------

これは、単純なマップ呼び出しで実現できます。もっと次のようなものが必要だと思います:

const users = [
  { username: 'alice', id: 123 },
  { username: 'bob', id: 456 },  
]

const players = users.map(user => ({
  name: user.username,
  id: user.id,
  lives: 3
}))

console.log(players);

総合生活情報サイト - OKWAVES
総合生活情報サイト - OKWAVES
生活総合情報サイトokwaves(オールアバウト)。その道のプロ(専門家)が、日常生活をより豊かに快適にするノウハウから業界の最新動向、読み物コラムまで、多彩なコンテンツを発信。