Javascript搜索任务

Javascript搜索任务,javascript,arrays,object,Javascript,Arrays,Object,任务:您有一个带有键:值对的数组,如: arr = ["x:1", "y:2", "a:5", "x:5", "z:0"] 必须对所有相同的键求和,以便: ["x:6","y:2","a:5","z:0"] 关于输出 我完成了这项任务,但它很复杂。我已经解决了这个任务,但我正在寻找一个更简单的解决方案 var a

任务:您有一个带有键:值对的数组,如:

arr = ["x:1", "y:2", "a:5", "x:5", "z:0"]
必须对所有相同的键求和,以便:

["x:6","y:2","a:5","z:0"]
关于输出

我完成了这项任务,但它很复杂。我已经解决了这个任务,但我正在寻找一个更简单的解决方案

var a=[“x:1”、“y:2”、“a:5”、“x:5”、“z:0”]
功能saberi(niz){
让povratni=[];
(尼兹家族){
让razdvojen=clan.split(“:”);
let key=razdvojen[0]
let value=razdvojen[1]
让我们假设Jera=false
for(设i=0;i
您可以使用该方法。遍历数组并按
冒号(:)
拆分每个项目。然后按键将其分组以计算总和。最后,使用方法将对象转换为
键值
对数组,然后通过
冒号(:)
映射并连接它

const arr=['x:1','y:2','a:5','x:5','z:0'];
const ret=Object.entries(
arr.reduce((上一个,c)=>{
常数p=上一个;
常数[k,v]=c.split(“:”);
p[k]=p[k]??0;
p[k]+=+v;
返回p;
}, {})
).map((x)=>x.join(“:”);

控制台日志(ret)您可以使用对象来简化此操作。冒号左侧的每个字符
将是对象中的一个键,冒号右侧的数字将是值,您可以在给定键处从对象中累积到值

首先,可以使用循环遍历
arr
,对于数组中的每个字符串,使用将字符串分解为其键和值组件。然后,您可以使用
grouped[key]
从对象(
grouped
)中获取存储在键处的当前值。如果该值不存在,可以使用
|124; 0
将其默认为0。将当前值存储在对象中后,可以将值的数字版本添加到累积值中,并将新值存储在对象中的键

拥有对象后,您可以获取条目以获得一个数组,其形式为
[[key,value],[key2,value2],…]
,您可以在上使用该数组将每个
[key,value]
转换为字符串形式的
key:value

常量arr=[“x:1”、“y:2”、“a:5”、“x:5”、“z:0”]; const grouped={}; 用于(arr的常数str){ const[key,num]=str.split(“:”); 分组[键]=(分组[键]| | 0)+数字(num); } const res=Object.entries(grouped.map)(entry=>entry.join(“:”);
控制台日志(res)如果代码有效,但您正在寻找更好的东西,则此问题属于我投票结束此问题,因为它属于codereview.stackexchange.com