如何在多维数组中搜索值?

时间:2016-12-12 15:17:58

标签: jquery arrays multidimensional-array

我有一个我想搜索的数组。我找到了一个使用$,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错误。

我做错了什么?

2 个答案:

答案 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);
}