ana*_*tta 0 javascript arrays find
根据这个MDN链接,find()方法采用一个可以带三个参数的回调函数:当前数组元素,当前数组元素的索引以及调用该方法的数组.
所以:
var r = [2, 9, 11]; console.log(r.find(function(e, i, r) {
if (e % 2 === 0)
return e; }))
Run Code Online (Sandbox Code Playgroud)
如我所料,返回2.
然而:
var r = [2, 9, 11];
console.log(r.find(function(e, i, r) {
if (e % 2 === 0)
return i;
}))
Run Code Online (Sandbox Code Playgroud)
return undefined(当我期望0时),
和
var r = [2, 9, 11];
console.log(r.find(function(e, i, r) {
if (e % 2 === 0)
return r;
}))
Run Code Online (Sandbox Code Playgroud)
返回2(当我期望[2,9,11]).
有人可以解释我没有正确理解的内容吗?
.find()假设您传递给的回调返回一个布尔值(true或false).返回.find()的值是回调返回非假值的第一个元素的值.
在你的第一个例子中:
var r = [2, 9, 11]; console.log(r.find(function(e, i, r) {
if (e % 2 === 0)
return e; }))
Run Code Online (Sandbox Code Playgroud)
返回值2 不是因为return e;返回值2,而是因为2真实.您可以通过更改return e为return true或任何其他truthy值来验证.
同样,在第二个例子中:
var r = [2, 9, 11];
console.log(r.find(function(e, i, r) {
if (e % 2 === 0)
return i;
}))
Run Code Online (Sandbox Code Playgroud)
你的回调0在第一个元素上返回(因为i是0),但这不是真的.
| 归档时间: |
|
| 查看次数: |
43 次 |
| 最近记录: |