【发布时间】:2014-01-24 17:21:03
【问题描述】:
我有一个 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?
谢谢。
【问题讨论】:
-
它看起来不像是你会使用 jQuery 插件、传递数组作为选择器等的那种事情?
-
我很想接受教育。在这种情况下,我为什么不使用 jQuery 插件?我是真诚的。也许你是对的。
-
你正在改变一个数组,你可以使用一个函数。 jQuery 通常用于操作 DOM,并将数组传递给一个 jQuery 插件,该插件只更改数组并返回它,这似乎是对 jQuery 的不好使用,因为只使用常规函数会更容易。
-
是的,我觉得你说的很有道理。你说的我最好做一些类似创建数组原型函数的事情,而不是使用 JS 框架。
-
是的,这就是我要说的,同时对像 Array 这样的原生对象进行原型设计也不总是一个好主意,但在这种情况下,它似乎比使用 jQuery 更好.
标签: jquery arrays object jquery-plugins this