Javascript 如何将数组中的值添加到对象?
我有一个数组:Javascript 如何将数组中的值添加到对象?,javascript,regex,Javascript,Regex,我有一个数组: let array = ["1#2","2#2","32#1","43#3","44#4","1#1","54#2","1#1"]; 我有一个RegExp/\d+\d+/g,可以.exec到组中的一个;在这个正则表达式中,我有两组数字 如果键/第一组等于,则表示该键第一组的和值 我怎样才能得到这个答案: let answer = [ { key: 1, value: 4 }, <==sum value of equal keys { key: 2,
let array = ["1#2","2#2","32#1","43#3","44#4","1#1","54#2","1#1"];
我有一个RegExp/\d+\d+/g,可以.exec到组中的一个;在这个正则表达式中,我有两组数字
如果键/第一组等于,则表示该键第一组的和值
我怎样才能得到这个答案:
let answer = [
{ key: 1, value: 4 }, <==sum value of equal keys
{ key: 2, value: 2 },
{ key: 32, value: 1 },
{ key: 43, value: 3 },
{ key: 44, value: 4 },
{ key: 54, value: 2 }
];
但这不起作用。。。我不知道该怎么办。为什么不迭代数组,拆分并将第一个值作为键,第二个值作为其对应值,并将它们放入哈希映射中。如果您确定总是将作为拆分器使用。为什么不在数组上迭代,拆分并将第一个值作为键,第二个值作为其对应值,并将它们放入哈希映射中。如果您确定始终将作为拆分器使用。另一种方法是使用函数reduce进行拆分并对对象进行分组 设数组=[12,22321433444,11542,11]; 让结果=Object.valuesarray.reducea,c=>{ 让[key,value]=c.split, accumKey=键+“|”+值, currentValue=键===值?值:0; a[accumKey]| a[accumKey]={key,value:0}.value+=Numbervalue; 返回a; }, {}; console.logresult;
.作为控制台包装器{max height:100%!important;top:0;}另一种方法是使用函数reduce拆分并对对象进行分组 设数组=[12,22321433444,11542,11]; 让结果=Object.valuesarray.reducea,c=>{ 让[key,value]=c.split, accumKey=键+“|”+值, currentValue=键===值?值:0; a[accumKey]| a[accumKey]={key,value:0}.value+=Numbervalue; 返回a; }, {}; console.logresult;
.作为控制台包装器{max height:100%!important;top:0;}您不必在此处使用正则表达式,您可以使用split方法获取键和值。此外,您还可以使用reduce获得以下结果: 设数组=[12,22321433444,11542,11]; 让answer=array.reducearr,curr=>{ 让[键,值]=当前拆分; 让existing=arr.findx=>x.key==+key; 如果存在{ 现有值+=+值; }否则{ arr.push{key:+key,value:+value}; } 返回arr; }, [];
console.loganswer 您不必在这里使用正则表达式,您可以使用split方法来获取键和值。此外,您还可以使用reduce获得以下结果: 设数组=[12,22321433444,11542,11]; 让answer=array.reducearr,curr=>{ 让[键,值]=当前拆分; 让existing=arr.findx=>x.key==+key; 如果存在{ 现有值+=+值; }否则{ arr.push{key:+key,value:+value}; } 返回arr; }, [];
console.loganswer 您可以拿一张地图,检查键和值是否相等。然后加上实际值 变量数组=[12,22321433444,11542,11], 结果=Array.from 大堆 减少 m、 s=>[k,v]=>m.setk,m.getk | | 0+vs.split.mapNumber, 新地图 .参赛作品, [key,value]=>{key,value} ; console.logresult;
.作为控制台包装{max height:100%!important;top:0;}您可以获取一个映射并检查键和值是否相等。然后加上实际值 变量数组=[12,22321433444,11542,11], 结果=Array.from 大堆 减少 m、 s=>[k,v]=>m.setk,m.getk | | 0+vs.split.mapNumber, 新地图 .参赛作品, [key,value]=>{key,value} ; console.logresult;
.作为控制台包装{max height:100%!important;top:0;}不,但我看到这篇文章,想为我做点什么。但我在这方面是新手。所以需要帮助。请告诉我们您尝试了什么,您有什么问题?另外,请参考我们的页面对不起,我是个书呆子,请阅读本页面。现在编辑和提问。不,但我看到这篇文章,想为我做点什么。但我在这方面是新手。所以需要帮助。请告诉我们您尝试了什么,您有什么问题?另外,请参考我们的页面对不起,我是个书呆子,请阅读本页面。现在编辑和提问。Yeap split on是个好主意,但是如果我有两组的RegExp,我不需要像我想的那样进行split,所以我请求帮助。Yeap split on是个好主意,但是如果我有两组的RegExp,我不需要像我想的那样进行split,因此,我请求帮助。如果相等的键不重复,我将编辑我需要的问题。@DevFromerth修改了我的答案,我想您希望键1下的值为4。如果相等的键不重复,我将编辑我需要的问题。@DevFromerth修改了我的答案,我猜您希望键1下的值为4编辑我的问题。但我不明白您为什么在此处使用新映射?映射用于对同一键进行分组。编辑我的问题。但我不明白您为什么在此处使用新映射?映射用于对同一键进行分组。
let itemObject = {
key: '',
value: ''
}
array.map((item) => {
let itemNumber = RegExp.exec(item);
itemObject.key = itemNumber[1];
itemObject.value = itemNumber[2];
this.emptyArray.push(itemObject);
})