Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/442.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_Algorithm - Fatal编程技术网

如何使用-而不是javascript添加每个数组的值

如何使用-而不是javascript添加每个数组的值,javascript,algorithm,Javascript,Algorithm,JavaScript的新特性。下面是我的代码,下面是算法应该完成的 function creditSum(arr) { var num_of_elements = parseInt(arr) array = arr.toString().split() array = array.map(Number) var sum_of_array = 0 for (var i = 0; i < num_of_elements; i++){ s

JavaScript的新特性。下面是我的代码,下面是算法应该完成的

function creditSum(arr) {
    var num_of_elements = parseInt(arr)
    array = arr.toString().split()
    array = array.map(Number)
    var sum_of_array = 0 
    for (var i = 0; i < num_of_elements; i++){
        sum_of_array += array[i]
    }

    return sum_of_array 
}
console.log(creditSum(['4916-2600-1804-0530', '4779-252888-3972', '4252-278893-7978', '4556-4242-9283-2260']))

在上面的示例数组中,数字的总和分别为
49、81、81和64
。由于有两个函数具有相同的和,因此该函数应返回最后一个具有该和的函数,在本例中,
'4252-278893-7978'

我认为这样做应该:

function creditSum(arr) {
  const resultIndex = arr
   .map(x => x
     .split('')
     .map(x => parseInt(x))
     .filter(x => !isNaN(x))
     .reduce((total, current) => total + current, 0)
   )
   .map((total, idx) => ({ idx, total }))
   .sort((a, b) => b.total - a.total)
   .reduce((result, current) =>
     current.total >= result.total ? current : result,
     { total: 0 }
   )
   .idx;

  return arr[resultIndex];
}

做这件事的原始方法。只是为了学习。我希望这能给你一个清晰的理解

函数积分和(arr){
var sum=[],current=0,last=0,w=0;
//从数组项中删除虚线
对于(变量i=0;i如果(最后一个问题是你想找人帮你解决的面试问题吗?这里有很多错误。
parseInt
不会给出元素的数量。这将是
arr.length
。没有理由将数组转换为字符串,然后立即返回数组。映射到
number
>不会做你认为会做的事。你也不会做任何事情来追踪最大的金额。你的家庭作业太棒了。你有什么问题吗?不,这不是为了面试,哈哈,只是一个我不太明白的挑战@Dekel@MikeC,谢谢。我知道我忘记了一些关键步骤,我的上一个函数中有一个max函数在发布之前,我做了一些尝试。只是发布了一些小故障。谢谢。代码确实工作正常。您解决这一问题的方法对我使用const函数非常有趣。我期待着将其分解,因为它与我以前看到的不同。谢谢。如果我有代表的话,我会给您一个类似的结果。
function creditSum(arr) {
  const resultIndex = arr
   .map(x => x
     .split('')
     .map(x => parseInt(x))
     .filter(x => !isNaN(x))
     .reduce((total, current) => total + current, 0)
   )
   .map((total, idx) => ({ idx, total }))
   .sort((a, b) => b.total - a.total)
   .reduce((result, current) =>
     current.total >= result.total ? current : result,
     { total: 0 }
   )
   .idx;

  return arr[resultIndex];
}