我有一个jQuery插件,我在部分帮助下创建了这个帖子:jQuery.unique on an array of strings。
这是我的代码:
// function
$(function() {
$.fn.removeDuplicates = function() {
var arrResult = [];
for (var i = 0, n = this.length; i < n; i++) {
var item = this[i];
var index = item.SerialNo + " - " + item.UPC + " - " + item.Name + " - " + item.Version + " - " + item.Description;
arrResult[ index ] = item;
}
var i = 0;
var nonDuplicatedArray = [];
for (var item in arrResult) {
nonDuplicatedArray[i++] = arrResult[item];
}
return (this = nonDuplicatedArray);
};
});
var arrObj = [
{ "SerialNo:"1234", "UPC":"ABCXYZ", "Name":"Test", "Version":"1", "Description":"test"},
{ "SerialNo:"1234", "UPC":"ABCXYZ", "Name":"Test", "Version":"1", "Description":"test"},
{ "SerialNo:"12345", "UPC":"ABCXYZ123", "Name":"Test2", "Version":"2", "Description":"test2"}
];
$(arrObj).removeDuplicates();
我想修改this
并将其返回。该插件不必链接,但我想保持函数调用相同。我意识到我可以通过返回nonDuplicatedArray
修改函数并将其设置为函数调用中的变量,ergo:
var newVar = $(arrObj).removeDuplicates();
但我希望有一种方法可以直接修改函数内的this
并返回this
,同时保留原始函数调用。简单地说,如何将nonDuplicatedArray
设置为this
?
谢谢。
答案 0 :(得分:1)
最后,只需返回数组,一旦函数完成了它应该执行的操作,就不需要将this
设置为nonDuplicatedArray
,您不再需要this
关键字,你只需要返回数组吗?
return nonDuplicatedArray;