javascript - 如何在不首先复制所有值的情况下移动数组中对象的属性值?

标签 javascript arrays algorithm

例如,假设我有数组:

let students=[
    {"name":"a","uid":"001"},
    {"name":"b","uid":"002"},
    {"name":"c","uid":"003"}
];

我想移动uid的值,预期结果:

let students=[
    {"name":"a","uid":"002"},
    {"name":"b","uid":"003"},
    {"name":"c","uid":"001"}
];

如果不首先将所有 uid 复制到新数组中,我该怎么做?我试过:

let students=[
        {"name":"a","uid":"001"},
        {"name":"b","uid":"002"},
        {"name":"c","uid":"003"}
    ];
let temp=students[0].uid;
for(let i=0;i<students.length;i++){
  students[(i+1)%students.length].uid=temp;
  temp=students[i].uid;
}

for(let s of students){
  console.log(s.name+':'+s.uid+',');
}

但它并没有像我预期的那样工作。

最佳答案

let students=[
        {"name":"a","uid":"001"},
        {"name":"b","uid":"002"},
        {"name":"c","uid":"003"}
    ];

let temp = students[0].uid
for(let i=0;i<students.length;i++){
  let temp2 = students[(i+1)%students.length].uid
  students[(i+1)%students.length].uid=temp;
  temp = temp2
}

for(let s of students){
  console.log(s.name+':'+s.uid+',');
}

关于javascript - 如何在不首先复制所有值的情况下移动数组中对象的属性值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53039689/

相关文章:

algorithm - 你如何编写一个 cronjob 在中午 12 点和中午 12 点之后只运行一次

javascript - 如何动态删除 jquery 脚本中的空格和新行?

javascript - 随机颜色表格单元格背景

arrays - 如何计算另一个数组中一个数组中的匹配元素 MongoDB

JavaScript 错误 : object is not a function in a video poker script

c# - 在没有 toUpper/toLower 的情况下大写/小写字符串的最有效方法

javascript - 如何使用 javascript 和三个 XML 文件在 IE 8 和 Chrome 中显示 XSLT?

javascript - 悬停事件上的 jQuery 不起作用

php - 组合 php 数组

algorithm - 最宽路径挑战 - 在最大生成树中查找路径的最有效方法