使用对象修改JavaScript数组

时间:2020-03-13 22:29:03

标签: javascript arrays object

我遇到一个奇怪的问题,我不知道是什么原因造成的。

在JavaScript中,我有一个对象数组。 就是这样:

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

我现在正在尝试选择七个完整的随机条目(与我多次选择相同的条目无关),向对象添加一些值,然后将其推入新数组。 像这样:

    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 :(得分:0)

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)