gpt4 book ai didi

javascript - 理解 Double return 语句是 Javascript

转载 作者:数据小太阳 更新时间:2023-10-29 05:22:42 26 4
gpt4 key购买 nike

我是 JS 的新手,基本上每天都在学习新东西,我只是在学习诸如如何动态更新数组之类的东西。不管怎样,我通常会尝试从网上获取干净的 JS 片段并调试它们,直到我掌握它的真正含义。所以这是我今天发现的一个片段:

var array1 = [
{ tagId: 1, tagName: 'tag 1' },
{ tagId: 2, tagName: 'tag 2' },
{ tagId: 3, tagName: 'tag 3' },
{ tagId: 4, tagName: 'tag 4' }


];

var array2 = [
{ tagId: 1, tagName: 'tag 1' },
{ tagId: 2, tagName: 'tag 2' },
{ tagId: 8, tagName: 'tag 8' }
];

var array3 = [
{ tagId: 1, tagName: 'tag 1' },
{ tagId: 0, tagName: 'tag 0' },
{ tagId: 9, tagName: 'tag 3' },
{ tagId: 12, tagName: 'tag 12' },
{ tagId: 13, tagName: 'tag 3' },
{ tagId: 14, tagName: 'tag 2' },
{ tagId: 6, tagName: 'tag 6' },
];


var a4 = common(array1, array2, array3)
console.log(a4);

function common( /*…*/ ) {
var a = arguments;
res = a[0]
for (var i = 1; i < a.length; i++) {
res = res.filter(function (el) {
return a[i].filter(function (el2) {
return el2.tagId === el.tagId
}).length
})
}
return res
}

基本上,该代码段会遍历其中包含对象文字的数组并将它们过滤掉。现在,这是我的问题。作为 JS 的新手,我遇到了一个有趣的案例,看到很多 JS 代码快速连续地使用 return 语句,或者一个接一个地使用。通常它们是嵌套的,这对我来说是一个非常有趣的案例,因为通常我猜一个单一的 return 语句应该是一个人所需要的。

不管怎样,回到我的例子,我的困难是什么,如果你看到 common function 里面的代码,你会看到下面的代码:

res = res.filter(function (el) {
return a[i].filter(function (el2) {
return el2.tagId === el.tagId
}).length
})

我真的无法理解双返回语句。我的理解是,return el2.tagId === el.tagId 返回 true 或 false 并返回:

a[i].filter(function (el2) {
return el2.tagId === el.tagId
}).length

它返回长度,我认为应该是一个整数,但是返回执行的顺序是什么? return el2.tagId === el.tagId 返回给谁?

当我看到双重返回语句时,我总是感到困惑。有人可以给我解释一下吗?

Jsfiddle here .

EDIT:: 试着在你的回答中详细一点。

谢谢。

亚历克斯-Z。

最佳答案

那些“双重”返回嵌套在匿名函数中;他们不是从相同的上下文中返回。

由内而外的工作:

return el2.tagId === el.tagId

正在从 a[i]filter() 方法中的匿名函数返回一个 bool 值:

a[i].filter(function (el2) {
return el2.tagId === el.tagId
})

该表达式结果的长度在 resfilter() 方法中的匿名函数中返回:

res = res.filter(function (el) {
return a[i].filter(function (el2) {
return el2.tagId === el.tagId
}).length
})

注意:filter() 将结果的 length 属性强制转换为 bool 值。

filter() 是 Array 原型(prototype)的一个方法,它构造一个新数组,该数组由提供的匿名函数返回 true 的项目组成(参见 MDN:Array.prototype.filter)

关于javascript - 理解 Double return 语句是 Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29442376/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com