Как мне создать массив отдельных объектов Javascript - PullRequest
1 голос
/ 30 сентября 2019

все они указывают на один и тот же объект "bestGamer". Я не хочу, чтобы они это делали, я хочу, чтобы каждая ячейка в массиве была отдельным объектом с различными значениями в их подпорках.

Iхочу сделать это статической причиной позже я хочу передать массив, я не вставляю во время выполнения разные значения

const bestGamer = {
        "name" : "",
        "points" : 0    
}
arr2 = new Array(2).fill(bestGamer)
console.log("First:",arr2[0])
console.log("Second:",arr2[1]);    
arr2[0].name ="Yossi"
arr2[0].points++
arr2[1].name ="Dima"
arr2[1].points++
console.log("First:",arr2[0]);
console.log("Second:",arr2[1]);
console.log("Orignal Object",bestGamer);

enter image description here

Ответы [ 3 ]

4 голосов
/ 30 сентября 2019

Вам нужно создать копию при помещении ее в newArray, fill(bestGamer) помещает одинаковые bestGamer на все индексы, чтобы вы имели одинаковую ссылку на все индексы

let bestGamer = { a: 1,  b: 2 }
let newArr = new Array(2).fill(0).map(v=> ({...bestGamer}))

newArr[0].a = 10
console.log(newArr)

Вместо нового массива вы можете использовать Array.from

let bestGamer = { a: 1,  b: 2 }
let newArr = Array.from({length:2}, () => ({...bestGamer}) )

newArr[0].a = 10
console.log(newArr)
0 голосов
/ 30 сентября 2019

для создания массива с отдельными объектами вы можете сделать это.

Шаг 1: объявить массив

var myArray = [];

Шаг 2: добавить в него объект

myArray.push[{0, 1, 2, 3}]

Теперь в вашем массиве есть 1 элемент. Этот предмет является предметом [0]. Элемент [0] является объектом. Внутри него есть несколько значений, в данном случае 4. поэтому для доступа ко второму элементу внутри item [0] вы можете использовать item [0] [1].

0 голосов
/ 30 сентября 2019

Вы заполняете массив bestGamer, поэтому он будет заполнен ссылками на тот же объект. Вам нужно создать новый объект для каждого элемента. Простой способ сделать это - объединить Array.map с Object.assign:

arr2 = new Array(2).fill(0).map(() => Object.assign({}, bestGamer));
...