Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/464.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/3/arrays/14.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
Coderbyte上的数组添加JavaScript函数_Javascript_Arrays - Fatal编程技术网

Coderbyte上的数组添加JavaScript函数

Coderbyte上的数组添加JavaScript函数,javascript,arrays,Javascript,Arrays,我正在对Coderbyte进行挑战,如能就我的问题提供任何建议,我将不胜感激: 给我的挑战是: 使用JavaScript语言,具有函数ArrayAdditionI(arr) 获取存储在arr中的数字数组,如果为true,则返回字符串 数组中的任何数字组合都可以加起来等于 数组中的最大数字,否则返回字符串false。 例如:如果arr包含[4,6,23,10,1,3],则输出应 返回true,因为4+6+10+3=23。数组不会为空, 不会包含所有相同的元素,并且可能包含负数。“ 我试图解决它的方

我正在对Coderbyte进行挑战,如能就我的问题提供任何建议,我将不胜感激:

给我的挑战是: 使用JavaScript语言,具有函数ArrayAdditionI(arr) 获取存储在arr中的数字数组,如果为true,则返回字符串 数组中的任何数字组合都可以加起来等于 数组中的最大数字,否则返回字符串false。 例如:如果arr包含[4,6,23,10,1,3],则输出应 返回true,因为4+6+10+3=23。数组不会为空, 不会包含所有相同的元素,并且可能包含负数。“

我试图解决它的方式:

函数数组添加(arr){
var newArr=arr.sort();//从最小到最大排序。
var largestNum=newArr.slice(-1);//获取最后一个数字,它将是最大的。
var loopArr=arr.sort().pop();//取出最大数字,以便以后添加。
var结果=0;
对于(var i=0;i使用

arr.sort(function (a, b) { return a - b })
使用

arr.sort(function (a, b) { return a - b })

这可能还不是完整的解决方案,但以下是JavaScript问题:

largestNum
是您算法中的一个数组
.sort()
不起作用

function ArrayAdditionI(arr){
    var largestNum = Math.max.apply(0, arr); // Gets the last number, which would be the largest.
    arr.sort(function(a, b){return a-b})
    arr.pop(); // Takes out the largest number for adding later.
    var result=0;  
如果(result!==largestNum){
,除法代价很高,可能会对浮点数产生意外的结果,也可以使用

这就是你的JavaScript。但我很确定算法是错误的——但我认为这取决于你


请注意,示例
[4,6,23,10,1,3]=>4+6+10+3=23
不仅仅是将最小值与最大值相加以尝试匹配它。

这可能还不是完整的解决方案,但下面是JavaScript问题:

largestNum
是您算法中的一个数组
.sort()
不起作用

function ArrayAdditionI(arr){
    var largestNum = Math.max.apply(0, arr); // Gets the last number, which would be the largest.
    arr.sort(function(a, b){return a-b})
    arr.pop(); // Takes out the largest number for adding later.
    var result=0;  
如果(result!==largestNum){
,除法代价很高,可能会对浮点数产生意外的结果,也可以使用

这就是你的JavaScript。但我很确定算法是错误的——但我认为这取决于你


请注意,示例
[4,6,23,10,1,3]=>4+6+10+3=23
不仅仅是将最小值与最大值相加以尝试匹配它。

这是一个可能的问题解决方案示例

工作原理:

  • 首先对所有项目进行降序排序
  • 将第一个元素移到
    最大值
  • 调用递归函数
    y
    ,使用缩减数组、最大值和一个变量,该变量为成功添加的项保留空数组
递归函数基本上分为两部分

  • 测试剩余和是否为零,如果为零,则得到结果并返回
    true
    ,从而完成函数
  • 如果不是,则遍历数组并
    • 从阵列中复制一个副本
    • 使用
      接头
    • 测试,如果该值小于或等于剩余值和调用
      y
      的结果,则使用短数组,求和负值,并使用已用项目和acual项目创建一个新数组
    • 如果为true,则返回true并完成该函数
  • 如果在返回之前未完成
    false
  • 函数x(数组){
    函数y(a、s、结果){
    var aa,i,v;
    如果(s==0){
    document.write('result:'+JSON.stringify(result,0,4)+'');
    返回true;
    }
    对于(i=0;iif(v问题解决方案的可能示例

    工作原理:

    • 首先对所有项目进行降序排序
    • 将第一个元素移到
      最大值
    • 调用递归函数
      y
      ,使用缩减数组、最大值和一个变量,该变量为成功添加的项保留空数组
    递归函数基本上分为两部分

  • 测试剩余和是否为零,如果为零,则得到结果并返回
    true
    ,从而完成函数
  • 如果不是,则遍历数组并
    • 从阵列中复制一个副本
    • 使用
      接头
    • 测试,如果该值小于或等于剩余值和调用
      y
      的结果,则使用短数组,求和负值,并使用已用项目和acual项目创建一个新数组
    • 如果为true,则返回true并完成该函数
  • 如果在返回之前未完成
    false
  • 函数x(数组){
    函数y(a、s、结果){
    var aa,i,v;
    如果(s==0){
    document.write('result:'+JSON.stringify(result,0,4)+'');
    返回true;
    }
    对于(i=0;iif(v我曾试图用for循环解决这个问题,但我忽略了一个事实,即挑战
    不是要求所有的数字加起来等于最大的数字,但也可以
    如果我们去掉一些数字,加起来就是最大的数值。因此我决定用递归来解决

    提示:
    *Math.max.apply()方法接受一个数组并返回最大的数字。请注意,它通常作为Math.max()处理字符串。
    *sort()方法可以使用一个参数来进一步扩展它的用途 对字符串进行排序,但为了对数字进行排序,我们包含了一个函数,用于查找哪个数字更大。
    *首先获取最大的数字。
    *对数组进行排序,并删除以后用于递归的最大数字。
    *创建一个递归函数,检查这些数字的总和是否为最大值,如果不是,则检查该值