js Array.prototype.filter.call() - 有人可以解释我这段代码是如何工作的
js Array.prototype.filter.call() - can someone explain me how this piece of code works?
有人可以解释这段代码是如何工作的吗?输出是带有输入字母但没有重复的向量。
var uniqueInOrder = function (iterable) {
return [].filter.call(iterable, (function (a, i) {
return iterable[i - 1] !== a
}));
}
console.log(uniqueInOrder("aaaaaBBBDSJJJJ"))
让我们分解一下: return [].filter.call(iterable,(function (a, i) { return iterable[i - 1] !== a }));
*. 我们返回一个数组。
*. 使用 .filter.call(iterable,
允许我们在iterable
上使用 Array.prototype.filter
方法,这是一个字符串(使函数将字符串视为字符数组(,因为call
获取的第一个参数是上下文。
因此,每次执行return iterable[i - 1] !== a
时,我们检查索引 i-1
中的元素(基本上是前一个元素(是否不等于当前元素a
如果它不相等,则返回 true,因此a
元素是正在返回的子集数组的一部分。
请注意,最简单的理解方法是调试,只需将此代码粘贴到开发人员工具栏控制台中即可:
var uniqueInOrder = function (iterable)
{debugger;
return [].filter.call(iterable,(function (a, i) { return iterable[i - 1] !== a }));
}
console.log(uniqueInOrder("aaaaaBBBDSJJJJ"))
@daymos 回调由三个参数调用。 看这里。
相关文章:
- 无法限制所选复选框的数量(尝试了多个代码段)
- 返回按钮代码段的Jquery冲突
- 问号在这段代码中是什么意思
- 我怎样才能用速记函数来写这段代码
- 为什么jQuery代码段在没有IFrame的情况下可以工作,而在有IFrame时却不能工作
- 为什么在以下代码段中无法访问中的变量值
- 这段代码的含义是什么<%=一些可变的%>
- 崇高的jslint:任何忽略特定代码段的方法
- 为什么这两段代码返回的值不同
- 如何重复某段代码
- Mozilla并没有完美地执行这段代码,尽管它适用于Chrome和IE
- 将 JSP 变量输出到 JavaScript 代码段中
- 这段代码的含义是什么 'start = +start ||0;' 在 JavaScript 中
- Eloquent JS第5章中的这段代码是做什么的
- JQuery:这段代码是什么意思
- 这段代码中发生了什么
- 这段代码有什么问题(responsible html-css-js)
- 调试jQuery代码段
- 嵌套if语句中的else语句.这段代码如何知道要执行哪个else语句
- 这段代码的语法是什么