Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/474.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将数组中的值添加到对象?_Javascript_Regex - Fatal编程技术网

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);
      })