【发布时间】:2018-04-04 08:29:37
【问题描述】:
我不得不删除数组中的相同数据。
我发现这段代码和它的工作方式完全符合我的要求,但我无法理解这段代码的一部分。
请解释这段代码和这是什么>>> a[this[i]]
Array.prototype.unique = function() {
var a = {}; //new Object
for (var i = 0; i < this.length; i++) {
if (typeof a[this[i]] == 'undefined') {
a[this[i]] = 1;
}
}
this.length = 0; //clear the array
for (var i in a) {
this[this.length] = i;
}
return this;
};
【问题讨论】:
-
该代码已过时且不太可靠。 (当用于字符串数组时,它将删除
'toString'、'hasOwnProperty'等,将任何其他类型转换为字符串,并且语言规范允许产生乱序结果。)使用Array.from(new Set(array))得到一个没有重复的数组。 -
i是一个数字,this[i]是这个数组的一个元素,a[this[i]]是var a中的一个属性 -
@Ry - 这将如何与 Internet Exploder 一起工作:p - 而且,这不会“就地”改变数组 - 也许这也很重要
-
@Ry,它根本不会删除这些方法......不知道你为什么认为它会
-
@JaromandaX:你试过了吗?
['toString', 'hasOwnProperty', 'foo'].unique()
标签: javascript arrays typeof