在javascript中嵌套array.some()
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在javascript中嵌套array.some()相关的知识,希望对你有一定的参考价值。
我想知道Array.some()的嵌套用法。假设任务是确定数组中的三个数字是否与给定值x相加。我尝试了以下,但它不起作用:
return myArray.some(function(num1)
myArray.some(function(num2)
myArray.some(function(num3)
return num1 + num2 + num3 === x;
);
);
);
任何有关这方面的见解都会有所帮助,包括上述原因无效的原因。
答案
你应该返回每个嵌套的myArray.some
的响应,否则封闭的方法将收到一个未定义的。
请参阅下面的代码。
var myArray = [1, 3, 7, 21];
var x = 31;
var opt = myArray.some(function(num1)
return myArray.some(function(num2)
return myArray.some(function(num3)
return num1 + num2 + num3 === x;
);
);
);
console.log(opt);
另一答案
您不会将内部结果返回到外部回调。
return myArray.some(function(num1)
return myArray.some(function(num2)
return myArray.some(function(num3)
return num1 + num2 + num3 === x;
);
);
);
如果您希望阻止从相同索引添加相同的值,则可以添加一个检查,该检查仅允许不在同一索引处的值。
return myArray.some(function(num1, i)
return myArray.some(function(num2, j)
return myArray.some(function(num3, k)
return i !== j && i !== k && num1 + num2 + num3 === x;
);
);
);
另一答案
如果您使用arrow functions
,那么只要一个语句就可以省略return:
箭头功能可以具有“简洁的身体”或通常的“块体”。
在简洁的主体中,只指定了一个表达式,该表达式成为显式返回值。在块体中,必须使用显式返回语句。
所以这应该工作:
myArray.some(num1 =>
myArray.some(num2 =>
myArray.some(num3 =>
num1 + num2 + num3 === x;
)));
以上是关于在javascript中嵌套array.some()的主要内容,如果未能解决你的问题,请参考以下文章
javascript Array.some和Array.every