Модификация массива JavaScript с помощью объектов - PullRequest
1 голос
/ 14 марта 2020

У меня странная проблема, и я не могу понять, что вызывает это.

У меня в JavaScript есть массив Объектов. Точно так же, как этот:

  var test = [{"title":"one"}, {"title":"two"}, {"title":"three"}, {"title":"four"}, {"title":"five"}, {"title":"six"}, {"title":"seven"}, {"title":"eight"}, {"title":"nine"}];

Я сейчас пытаюсь выбрать семь полных случайных записей (не имеет значения, выбираю ли я один и тот же несколько раз), добавить некоторые значения к объектам и pu sh это в новый массив. Как это:

    var schedule = [];

for(var i = 0 ; i < 7 ; i++) {

    var randomNumber = Math.floor(Math.random() * (test.length - 1));
    var temp = test[randomNumber];
    temp["id"] = i;

    schedule.push(temp);

}

То, что я ожидаю стать: массив, содержащий следующие объекты:

[{"title":"one", 0}, {"title":"three", 1}, {"title":"one", 2}, {"title":"two", 3}, {"title":"five", 4}, {"title":"one", 5}, {"title":"eight", 6}, {"title":"two", 7}]

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

[{"title":"one", 5}, {"title":"three", 1}, {"title":"one", 5}, {"title":"two", 7}, {"title":"five", 4}, {"title":"one", 5}, {"title":"eight", 6}, {"title":"two", 7}]

Может кто-нибудь объяснить мне это?

1 Ответ

0 голосов
/ 14 марта 2020

var test = [{
     "title": "one"
   }, {
     "title": "two"
   }, {
     "title": "three"
   }, {
     "title": "four"
   }, {
     "title": "five"
   }, {
     "title": "six"
   }, {
     "title": "seven"
   }, {
     "title": "eight"
   }, {
     "title": "nine"
   }];


   const result = test.map((x, i) => ({
     title: test[Math.floor(Math.random() * (test.length - 1))].title,
     id: i
   }));


   console.log(result)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...