【问题标题】:why this JavaScript algorithm got undefined?为什么这个 JavaScript 算法没有定义?
【发布时间】:2021-04-02 08:00:55
【问题描述】:

我正在努力解决这个问题:

你会得到一个整数数组。您的工作是获取该数组并找到一个索引 N,其中整数之和 N 的左边等于 N 右边的整数之和。如果 没有索引可以实现,返回 -1。

例如:

假设给定数组{1,2,3,4,3,2,1}:你的函数 将返回索引 3,因为在数组的第三个位置, 索引左侧的总和 ({1,2,3}) 和右侧的总和 索引的一边({3,2,1}) 都等于 6。让我们看看另一个。

给你数组{1,100,50,-51,1,1}:你的函数将 返回索引 1,因为在数组的第一个位置,总和 索引左侧的 ({1}) 和右侧的总和 index ({50,-51,1,1}) 都等于 1。最后一个:

给你数组{20,10,-80,10,10,15,35}在索引0左边 一边是{} 右边是{10,-80,10,10,15,35} 他们都是 添加时等于 0。 (本题空数组等于0) 索引0是左右相等的地方。

注意:请记住,在大多数编程/脚本语言中,数组的索引从 0 开始。输入:长度为整数的数组 0 < arr < 1000。数组中的数字可以是任何正整数 或否定的。输出:左边的最低索引 N N等于N的右边。如果没有找到索引 符合这些规则,那么您将返回 -1。注意:如果给你 一个有多个答案的数组,返回正确的最低索引。

我用这个代码回答:

 function findEvenIndex(arr) {
  var index;
  for (var i = 0; i < arr.lenght; i++) {
    if (arr.slice(0,i+1).reduce((a, b) => a + b, 0) == arr.slice(i + 1 ,).reduce((a, b) => a + b, 0)) 
{
      index = i;
    }
  }
  return index;
}

但问题是函数 return : undefined;当我尝试测试它时。

我的问题是:

-为什么函数得到:未定义?

-我该如何解决?

注意:练习链接“https://www.codewars.com/kata/5679aa472b8f57fb8c000047/train/javascript

谢谢


【问题讨论】:

  • lenght?你的意思是length?此外,如果if 条件永远不会为真,那么结果仍将是undefined。通常,如果找不到索引,则应返回-1

标签: javascript arrays


【解决方案1】:

这是你的答案。你的错误是:

  1. length 拼写错误。
  2. 数组arr.slice(i) 反向迭代不正确。

 function findEvenIndex(arr) {
  let index = -1;
  for (var i = 0; i < arr.length; i++) {
    let start = arr.slice(0, i+1).reduce((a, b) => a + b, 0);
    let end = arr.slice(i).reduce((a, b) => a + b, 0)
    
    if (start === end) {
      
      index = i
    }
    
  }
  return index;
}

【讨论】:

    猜你喜欢
    • 2018-05-11
    • 1970-01-01
    • 2018-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多