我如何修改它并使用jQuery插件返回?

时间:2014-01-24 17:21:04

标签: jquery arrays object jquery-plugins this

我有一个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

谢谢。

1 个答案:

答案 0 :(得分:1)

最后,只需返回数组,一旦函数完成了它应该执行的操作,就不需要将this设置为nonDuplicatedArray,您不再需要this关键字,你只需要返回数组吗?

return nonDuplicatedArray;

FIDDLE