我有一个我想搜索的数组。我找到了一个使用$,map的方法,但是我无法使用它。
我的数组生成如下:(使用从MySQL获取数据的PHP循环)
clientList.push = [{'ID' : '1', 'FullName' : 'Company1'}]
clientList.push = [{'ID' : '2', 'FullName' : 'Company2'}]
clientList.push = [{'ID' : '3', 'FullName' : 'Company3'}]
我正在尝试使用以下命令返回“FullName”值,其中ID = 2.这是另一个问题的示例。
var found = $.map(clientList, function(item) {
if (item.ID.indexOf('2') >= 0) {
return item;
}
});
if (found.length > 0) {
alert(found[0].FullName);
}
然而,这不会返回任何内容,我也不会收到任何Javascript错误。
我做错了什么?
答案 0 :(得分:3)
这是不正确的:
clientList.push = [{'ID' : '1', 'FullName' : 'Company1'}]
clientList.push = [{'ID' : '2', 'FullName' : 'Company2'}]
clientList.push = [{'ID' : '3', 'FullName' : 'Company3'}]
您将数组分配给push
属性,这是数组的一种方法。
如果你有一个从clientList
引用的数组,那么要添加调用 push
(无=
,并注意( ... );
}):
clientList.push([{'ID' : '1', 'FullName' : 'Company1'}]);
clientList.push([{'ID' : '2', 'FullName' : 'Company2'}]);
clientList.push([{'ID' : '3', 'FullName' : 'Company3'}]);
另外,$.map
代码不起作用,clientList
中的条目没有ID
属性(它们是数组;对象里面他们有ID
属性。)
你在评论中说过:
我的目标是将MySQL表转储到可以搜索的Jquery数组中
然后你不想要一个对象数组数组,只需要一个对象数组:
var clientList = []
// Presumably simulating the results of an ajax query
clientList.push({'ID' : '1', 'FullName' : 'Company1'});
clientList.push({'ID' : '2', 'FullName' : 'Company2'});
clientList.push({'ID' : '3', 'FullName' : 'Company3'});
要使用ID == 2
在此处查找条目int,您将使用Array#find
(ES2015中的新内容,但可调换/可填充):
var item = clientList.find(function(item) {
return item.ID == "2";
});
实例:
var clientList = []
// Presumably simulating the results of an ajax query
clientList.push({'ID': '1', 'FullName': 'Company1'});
clientList.push({'ID': '2', 'FullName': 'Company2'});
clientList.push({'ID': '3', 'FullName': 'Company3'});
var item = clientList.find(function(item) {
return item.ID == "2";
});
console.log(item);
答案 1 :(得分:1)
push()
方法将新项目添加到array
的末尾。使用此fiddle:
var clientList=[];
clientList.push({'ID' : '1', 'FullName' : 'Company1'})
clientList.push({'ID' : '2', 'FullName' : 'Company2'})
clientList.push({'ID' : '3', 'FullName' : 'Company3'})
var found = $.map(clientList, function(item,index) {
if (item.ID == 2) {
return item;
}
});
if (found.length > 0) {
alert(found[0].FullName);
}