我遇到一个奇怪的问题,我不知道是什么原因造成的。
在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}]
有人可以向我解释吗?
答案 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)