使用对象修改JavaScript数组

使用对象修改JavaScript数组,javascript,arrays,object,Javascript,Arrays,Object,我有一个奇怪的问题,我不知道是什么原因造成的 在JavaScript中,我有一个对象数组。 就像这个: var test = [{"title":"one"}, {"title":"two"}, {"title":"three"}, {"title":"four"}, {"title":"five"}, {"title":"six"}, {"title":"seven"}, {"title":"eight"}, {"title":"nine"}]; 我现在尝试选取七个完整的随机条目(无论我

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

在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", 5}, {"title":"three", 1}, {"title":"one", 5}, {"title":"two", 7}, {"title":"five", 4}, {"title":"one", 5}, {"title":"eight", 6}, {"title":"two", 7}]
有人能给我解释一下吗?

var测试=[{
“标题”:“一”
}, {
“标题”:“两个”
}, {
“标题”:“三”
}, {
“标题”:“四”
}, {
“标题”:“五”
}, {
“标题”:“六”
}, {
“标题”:“七”
}, {
“标题”:“八”
}, {
“标题”:“九”
}];
常量结果=test.map((x,i)=>({
标题:测试[Math.floor(Math.random()*(test.length-1))]。标题,
id:我
}));
console.log(结果)
var测试=[{
“标题”:“一”
}, {
“标题”:“两个”
}, {
“标题”:“三”
}, {
“标题”:“四”
}, {
“标题”:“五”
}, {
“标题”:“六”
}, {
“标题”:“七”
}, {
“标题”:“八”
}, {
“标题”:“九”
}];
常量结果=test.map((x,i)=>({
标题:测试[Math.floor(Math.random()*(test.length-1))]。标题,
id:我
}));

console.log(result)
因为您不创建新对象,所以只更新相同的旧对象?如果你想在日程安排中安排一份副本,请明确地这样做。你能更深入地解释一下吗?这里到底出了什么问题?正确的方法是什么?
schedule.push(temp)嗯,我明白了,谢谢!创建独立副本的正确方法是什么?可以克隆元素。克隆的一种方法是
var temp=JSON.parse(JSON.stringify(yourlelement))
,因为您不创建新对象,只是不断更新相同的旧对象?如果你想在日程安排中安排一份副本,请明确地这样做。你能更深入地解释一下吗?这里到底出了什么问题?正确的方法是什么?
schedule.push(temp)嗯,我明白了,谢谢!创建独立副本的正确方法是什么?可以克隆元素。克隆的一种方法是
var temp=JSON.parse(JSON.stringify(yourlelement))
[{"title":"one", 5}, {"title":"three", 1}, {"title":"one", 5}, {"title":"two", 7}, {"title":"five", 4}, {"title":"one", 5}, {"title":"eight", 6}, {"title":"two", 7}]