Javascript-更新数组中的重复数字
我有一个这样的无序列表Javascript-更新数组中的重复数字,javascript,arrays,Javascript,Arrays,我有一个这样的无序列表 list1 = [2,3,1,2,1,3,3,1,2] 我希望每次都将+10添加到此列表中的定期元素。所以应该有一个清单如下 list1 = [2,3,1,12,11,13,23,21,22] 同时,列表顺序必须保持不变 事实上,列表比这里的示例长(10位数字重复7次) 非常感谢您的建议。只需进行查找,计算数字的频率,然后将频率乘以10,再将数字相加即可 const list1=[2,3,1,2,1,3,3,1,2], 查找={}, 结果=列表1.map(编号=>{
list1 = [2,3,1,2,1,3,3,1,2]
我希望每次都将+10添加到此列表中的定期元素。所以应该有一个清单如下
list1 = [2,3,1,12,11,13,23,21,22]
同时,列表顺序必须保持不变
事实上,列表比这里的示例长(10位数字重复7次)
非常感谢您的建议。只需进行查找,计算数字的频率,然后将频率乘以10,再将数字相加即可
const list1=[2,3,1,2,1,3,3,1,2],
查找={},
结果=列表1.map(编号=>{
查阅[编号]=(查阅[编号]| | 0)+1;
返回编号+(查找[编号]-1)*10;
});
控制台日志(结果)代码>您可以这样做:
var list1=[2,3,1,2,1,3,3,1,2];
var countObject={};
列表1.forEach(函数(项、索引){
if(countObject[项目]){
列表1[索引]=项+(10*countObject[项]);
countObject[项目]=countObject[项目]+1;
}否则{
countObject[项目]=1;
}
});
对于紧凑型版本,您可以在对象上取闭包进行计数,并将零指定给未知属性并递增该值
const
列表=[2,3,1,2,1,3,3,1,2],
结果=list.map((o=>v=>v+10*(o[v]??=0,o[v]+)({}));
console.log(…结果)代码>你能展示你尝试过的吗?它给出了类型错误:list1.foreach不是一个函数
,它是foreach,不是foreach。它不提供OP指定的输出,这返回[2,3,1,12,11,13,13,11,12]
,但OP要求[2,3,1,12,11,13,23,21,22]
。嗨,Majid,谢谢你的建议,我会试试Ethey Hassan,它工作顺利,对我的目的非常有用。非常感谢。嗨,尼娜,谢谢你的建议!我会试试的