gpt4 book ai didi

javascript - arr.push(arr.splice(n,1)) "swallows"被移动对象的属性

转载 作者:行者123 更新时间:2023-12-03 00:51:04 26 4
gpt4 key购买 nike

例如,我想把中间的元素放到最后:

let students=[
{"name":"a","uid":"001"},
{"name":"b","uid":"002"},
{"name":"c","uid":"003"},
{"name":"d","uid":"004"},
{"name":"e","uid":"005"},
];
students.push(students.splice(students.length/2,1));
console.log(students.length);
for(let s of students){
console.log(s.name+':'+s.uid+',');
}

尽管元素数量不变,但最后一个元素的属性变得未定义,为什么会发生这种情况?

最佳答案

splice 始终返回一个数组,即使只删除一个元素也是如此。如果您想推送已删除的student,则必须先将其从数组中提取出来,否则您将向students推送数组> (而不是学生对象):

let students=[
{"name":"a","uid":"001"},
{"name":"b","uid":"002"},
{"name":"c","uid":"003"},
{"name":"d","uid":"004"},
{"name":"e","uid":"005"},
];
const [student] = students.splice(students.length/2,1);
students.push(student);
// or
// students.push(students.splice(students.length/2,1)[0]);
console.log(students.length);
for(let s of students){
console.log(s.name+':'+s.uid+',');
}

关于javascript - arr.push(arr.splice(n,1)) "swallows"被移动对象的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53039865/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com