为什么这个JavaScript算法没有定义?
我试图解决这个问题: 您将得到一个整数数组。您的工作是获取该数组,并找到一个索引N,其中整数的和为 N的左边等于N的右边整数的和。如果 没有能够实现这一点的索引,返回-1 例如:为什么这个JavaScript算法没有定义?,javascript,arrays,Javascript,Arrays,我试图解决这个问题: 您将得到一个整数数组。您的工作是获取该数组,并找到一个索引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 +
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;
}
假设您得到了数组{1,2,3,4,3,2,1}
:您的函数
将返回索引3,因为在数组的第3个位置
索引({1,2,3})左侧和右侧的和
索引的边({3,2,1})
都等于6。让我们看另一个
您将获得数组{1100,50,-51,1,1}
:您的函数将
返回索引1,因为在数组的第一个位置,和
索引({1})
左侧和
索引({50,-51,1,1})
都等于1。最后一个:
在左边的索引0处有一个数组{20,10,-80,10,10,15,35}
侧面是{}
右侧是{10,-80,10,10,15,35}
它们都是
添加时等于0。(在此问题中,空数组等于0)
索引0是左侧和右侧相等的位置
注意:请记住,在大多数编程/脚本语言中,数组的索引从0开始。输入:长度的整数数组
0
。数组中的数字可以是任何正整数
或者是否定的。输出:最小索引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;
}
函数findEvenIndex(arr){
var指数;
对于(变量i=0;ia+b,0)==arr.slice(i+1,).reduce((a,b)=>a+b,0))
{
指数=i;
}
}
收益指数;
}
但问题是函数返回:未定义;当我试着测试它的时候
我的问题是:
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;
}
-为什么函数得到:未定义
-我怎样才能修好它
注意:练习的链接“”
谢谢
这是你的答案。你的错误是:
长度的拼写不正确
数组arr.slice(i)
反向迭代不正确
函数findEvenIndex(arr){
设指数=-1;
对于(变量i=0;ia+b,0);
让end=arr.slice(i).reduce((a,b)=>a+b,0)
如果(开始==结束){
指数=i
}
}
收益指数;
}
长度
?你是说长度吗?此外,如果if
条件从未为真,结果将是未定义的
。通常,如果找不到索引,则应返回-1
。