我想用唯一的标记替换数组中的所有相同值。
例如:数组 =
[{ name: 'Dave', groupid: '1' },
{ name: 'Bob', groupid: '1' },
{ name: 'Jessica', groupid: '2' },
{ name: 'Natalie', groupid: '3' }]
我希望它看起来像这样:
[{ name: 'Dave', groupid: 'fj782' },
{ name: 'Bob', groupid: 'fj782' },
{ name: 'Jessica', groupid: 'wi283' },
{ name: 'Natalie', groupid: 'ivh29' } ]
这是我用来生成唯一令牌的内容:
var uniqueGroupid =
Math.random()
.toString(36)
.substring(2, 5) +
Math.random()
.toString(36)
.substring(2, 5);
任何帮助将不胜感激
您可以使用Map
对象来累积唯一的 groupid 并随时替换它们:
let data = [{ name: 'Dave', groupid: '1' },
{ name: 'Bob', groupid: '1' },
{ name: 'Jessica', groupid: '2' },
{ name: 'Natalie', groupid: '3' }];
function makeNewGroupId() {
return Math.random()
.toString(36)
.substring(2, 5) +
Math.random()
.toString(36)
.substring(2, 5);
}
// map object where we store original groupid as key and new groupid as value
let uniqueGroupIds = new Map();
for (let obj of data) {
// see if we already have this groupid in the Map
let newId = uniqueGroupIds.get(obj.groupid);
// if not, make a new group id
if (!newId) {
newId = makeNewGroupId();
// save this new groupid in our map
uniqueGroupIds.set(obj.groupid, newId);
}
// update the object with the newId
obj.groupid = newId;
}
console.log(data);
该函数makeNewGroupId()
可以是您想要创建新的唯一 groupId 的任何函数。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句