Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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 如何组合相同的多个阵列? [ [20',20], [20',20], [20',20], [20',20], [10',10], [5',5], [1',1], [‘季度’,0.25], [‘季度’,0.25], [‘一角’,0.1], [‘一角’,0.1], [PENNY',0.01], [PENNY',0.01], [“便士”,0.01] ]_Javascript_Arrays - Fatal编程技术网

Javascript 如何组合相同的多个阵列? [ [20',20], [20',20], [20',20], [20',20], [10',10], [5',5], [1',1], [‘季度’,0.25], [‘季度’,0.25], [‘一角’,0.1], [‘一角’,0.1], [PENNY',0.01], [PENNY',0.01], [“便士”,0.01] ]

Javascript 如何组合相同的多个阵列? [ [20',20], [20',20], [20',20], [20',20], [10',10], [5',5], [1',1], [‘季度’,0.25], [‘季度’,0.25], [‘一角’,0.1], [‘一角’,0.1], [PENNY',0.01], [PENNY',0.01], [“便士”,0.01] ],javascript,arrays,Javascript,Arrays,我的数组由相同的数组组成。如何组合相同的索引?您可以使用reduce对输入数组中唯一索引0的总数求和: const data=[['二十',二十], [20',20], [20',20], [20',20], [10',10], [5',5], [1',1], [‘季度’,0.25], [‘季度’,0.25], [‘一角’,0.1], [‘一角’,0.1], [PENNY',0.01], [PENNY',0.01], ['便士',0.01]] ; const result=Object.ent

我的数组由相同的数组组成。如何组合相同的索引?

您可以使用
reduce
对输入数组中唯一索引
0
的总数求和:

const data=[['二十',二十],
[20',20],
[20',20],
[20',20],
[10',10],
[5',5],
[1',1],
[‘季度’,0.25],
[‘季度’,0.25],
[‘一角’,0.1],
[‘一角’,0.1],
[PENNY',0.01],
[PENNY',0.01],
['便士',0.01]]
;
const result=Object.entries(data.reduce)(a,e)=>{
a[e[0]]=e[1]+(a[e[0]]| | 0);
返回a;
}, {}));
控制台日志(结果)好了

var a = [
  ["TWENTY", 20],
  ["TWENTY", 20],
  ["TWENTY", 20],
  ["TWENTY", 20],
  ["TEN", 10],
  ["FIVE", 5],
  ["ONE", 1],
  ["QUARTER", 0.25],
  ["QUARTER", 0.25],
  ["DIME", 0.1],
  ["DIME", 0.1],
  ["PENNY", 0.01],
  ["PENNY", 0.01],
  ["PENNY", 0.01]
];
var b = a.reduce((acc, curr) => {
  if (acc[curr[0]]) acc[curr[0]] += curr[1];
  else acc[curr[0]] = curr[1];
  return acc;
}, {});

console.log(b);

Array reduce是您希望用于合计金额的方法,同时将其保留为键/值数组,尽管我个人可能会将其映射为
{key:value}
,然后使用reduce以获得更简单的最终结果

const group=[
[20',20],
[20',20],
[20',20],
[20',20],
[10',10],
[5',5],
[1',1],
[‘季度’,0.25],
[‘季度’,0.25],
[‘一角’,0.1],
[‘一角’,0.1],
[PENNY',0.01],
[PENNY',0.01],
[“便士”,0.01]
];
const totals=group.reduce((累加器,[键,值])=>{
常量索引=累加器.findIndex(([k,v])=>k==key);
如果(索引==-1){
返回[…累加器,[键,值];
}
const newTotal=[键,(累加器[索引][1]+值];
返回[…累加器.slice(0,索引),新总计,…累加器.slice(索引+1)];
},[]);
const totalsAsObject=group.reduce((累加器,[键,值])=>{
const objectKeys=Object.keys(累加器);
if(objectkey.includes(key)){
返回{…累加器[键]:累加器[键]+值}
}
返回{…累加器,[键]:值}
},
{}
);
控制台日志(总计);

console.log(totalsAsObject)
您可以使用
map
累加器包装
reduce
函数,并使用
array.from

  result = Array.from(arr.reduce((a, cv) => {
    return ([t, amt] = cv,
      (a.has(t)) ? a.set(t, a.get(t) + amt) : a.set(t, amt), a)
  }, new Map()));
让arr=[
[20,20],,
[20,20],,
[20,20],,
[20,20],,
[10',10],
[5',5],
[1',1],
[1/4',0.25],
[1/4',0.25],
[DIME',0.1],
[DIME',0.1],
[PENNY',0.01],
[PENNY',0.01],
[便士,0.01]
],
结果=数组.from(arr.reduce)((a,cv)=>{
回报率([t,金额]=cv,
(a.has(t))?a.set(t,a.get(t)+amt:a.set(t,amt),a)
},新地图());
控制台日志(结果)ES6备选方案:

const data=[['二十',二十],
[20',20],
[20',20],
[20',20],
[10',10],
[5',5],
[1',1],
[‘季度’,0.25],
[‘季度’,0.25],
[‘一角’,0.1],
[‘一角’,0.1],
[PENNY',0.01],
[PENNY',0.01],
['便士',0.01]]
const result=data.reduce((o[k,v])=>(o[k]=v+o[k]|v,o),{})
console.log(结果)

console.log(Object.entries(result))
您期望的输出是什么?[[PENNY',1.01],'NICKEL',2.05],'DIME',3.1],'QUARTER',4.25],'ONE',90],'FIVE',55],'TEN',20],'Twon',60],'一百',100]]我希望输出看起来像这样。@Ozubergs您的输出与上述值无关。您的意思是“查看每种货币类型的总价值是多少?”意思是,在最后,您将知道您拥有的便士总数、镍币总数、一角硬币总数等。请看,这似乎并没有回答OP的问题。他们正在寻找一个与他们最初发布的格式相同的数组。你说得对。当时的要求似乎不明确。所有需要更改的是
Object.values()
->
Object.entries()