创建一个通用的查找功能,然后使用它:
function lookup(myArray, searchTerm, property, firstOnly) {
var found = [];
for (var i = 0; i < myArray.length; i++) {
if (myArray[i][property] === searchTerm) {
found.push(myArray[i]);
if (firstOnly) break; //if only the first
}
}
return found;
}
使用它:
var existUser = lookup(selectedUsers,"qid",$(this).val(),true);
if(existUser && existUser.length){// it returned a match if len > 0
push it here
}
这是一个有点冒险,如果有人已经查阅了,所以让我们命名空间我吨,其他一些:)(更改myApp
到你)
使用:
var existUser = myApp.arrayObj.lookup(selectedUsers,"qid",$(this).val(),true);
或使用包含:
var hasUser = myApp.arrayObj.contains(selectedUsers,"qid",$(this).val());
功能:
var myApp = myApp || {};
myApp.arrayObj = {
indexOf: function(myArray, searchTerm, property) {
for (var i = 0; i < myArray.length; i++) {
if (myArray[i][property] === searchTerm) return i;
}
return -1;
},
indexAllOf: function(myArray, searchTerm, property) {
var ai = [];
for (var i = 0; i < myArray.length; i++) {
if (myArray[i][property] === searchTerm) ai.push(i);
}
return ai;
},
lookup: function(myArray, searchTerm, property, firstOnly) {
var found = [];
for (var i = 0; i < myArray.length; i++) {
if (myArray[i][property] === searchTerm) {
found.push(myArray[i]);
if (firstOnly) break; //if only the first
}
}
return found;
},
lookupAll: function(myArray, searchTerm, property) {
return this.lookup(myArray, searchTerm, property, false);
},
remove: function(myArray, searchTerm, property, firstOnly) {
for (var i = myArray.length - 1; i >= 0; i--) {
if (myArray[i][property] === searchTerm) {
myArray.splice(i, 1);
if (firstOnly) break; //if only the first term has to be removed
}
}
},
contains: function(myArray, searchTerm, property){
return this.indexOf(myArray, searchTerm, property) !== -1;
}
};
也许你不需要if条件 –
JS实际上并没有关联数组......如果你有字符串键,那么你需要一个常规的对象,而不是一个数组。我建议为选定的用户创建一个对象而不是数组,然后你可以通过qid来索引它。 –
在我看来,这里的对象阵列还是比较好的。毕竟,这是一个用户列表。 – azium