Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.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_Arrays - Fatal编程技术网

在Javascript中,如何对任意数量不同长度数组的元素求和?

在Javascript中,如何对任意数量不同长度数组的元素求和?,javascript,arrays,Javascript,Arrays,虽然下面的代码可以满足添加两个不同长度的数组的要求,但我如何修改它以接受任意数量的数组作为参数,以便(例如,([1,2,3],[4,5],[6])返回一个[11,7,3]的数组 const addTogether = (arr1, arr2) => { let result = []; for (let i = 0; i < Math.max(arr1.length, arr2.length); i++) { result.push((arr1[i] || 0) +

虽然下面的代码可以满足添加两个不同长度的数组的要求,但我如何修改它以接受任意数量的数组作为参数,以便(例如,([1,2,3],[4,5],[6])返回一个[11,7,3]的数组

const addTogether = (arr1, arr2) => {
  let result = [];
  for (let i = 0; i < Math.max(arr1.length, arr2.length); i++) {
    result.push((arr1[i] || 0) + (arr2[i] || 0))

  }
  return result
}
const addTogether=(arr1,arr2)=>{
让结果=[];
for(设i=0;i
不要使用要求您知道每个数组长度的
for
循环,而是尝试使用不需要知道的循环。例如-
while
循环

使用一个虚拟变量递增并为每个数组重置它,并将循环终止的条件设置为-
arr[i]==null

您可以在函数中使用对象

arguments
是一个类似数组的对象,可在函数内部访问,其中包含传递给该函数的参数值

const addTogether=函数(){
常量输入=[…参数];
const maxLen=Math.max(…inputs.map((item)=>item.length));
常量结果=[];
for(设i=0;iacc+(cur[i]| | 0));
}
返回结果;
};

log(加在一起([1,2,3],[4,5],[6])使用嵌套数组,并在数组上循环,而不是硬编码两个数组变量

您可以使用
arrays.map()
获取所有长度,以便计算最大长度。和
arrays.reduce()
对每个数组中的一个元素求和

const addTogether=(…数组)=>{
让结果=[];
设len=Math.max(…array.map(a=>a.length));
for(设i=0;isum+(arr[i]| | 0),0));
}
返回结果
}
log(加在一起([1,2,3],[4,5],[6])解决方案:

const addTogether=(…args)=>{
让结果=[];
设max=0;
args.forEach((arg)=>{
最大值=数学最大值(最大值,参数长度)
})

for(让j=0;j使用
rest param syntax
接受任意数量的参数。按长度降序对外部数组进行排序。通过使用解构赋值分隔第一个和其余内部数组。最后使用
array.prototype.map()
遍历第一个数组,因为它是最大的数组,并使用
array.prototype.reduce()
方法获得总和

const addTogether=(…ar)=>{
ar.sort((x,y)=>y.length-x.length);
常数[第一,…br]=ar;
先返回。地图(
(x,i)=>x+br.reduce((p,c)=>(iconsole.log(addTogether([1,2,3],[4,5],[6]);
如果您使用的是ES6,则可以在参数列表中使用
…inputs
。如果单击
[]
,则可以实际显示一个示例