Javascript数组中的indexOF方法

时间:2013-06-17 13:31:34

标签: javascript arrays json list indexof

我构建了以下列表:

var names_Array= []; 
var names_List= new WinJS.Binding.List(names_Array);
names_List.push({ name: "Joe Dowling", image: "image/Joe Dowling.png", ClientID: "1234" }, { name: "Esteban Flamenco ", image: "image/Esteban Flamenco.png", ClientID: "6666" });

我希望能够获得ID为6666的列表索引。到目前为止,我的尝试是执行以下操作:

var number = names_List.indexOf('{ name: "Esteban Flamenco ", image: "image/Esteban Flamenco.png", ClientID: "6666" }');
console.log(number);

但我得到-1(即没有找到)。我哪里错了?

1 个答案:

答案 0 :(得分:2)

您必须根据自己的需求创建一个搜索工具,可能是这样的:

function findObject( list, property, value ) {
  var i;
  for (i = 0; i < list.length; ++i)
    if (list[i] != null && list[i][property] == value)
      return elem;
}

然后你可以这样做:

var client6666 = findObject(names_List, 'ClientID', '6666');

如果找不到匹配的元素,则返回值为undefined

编辑 - 我对WinJS API知之甚少(好吧,没什么),但看起来那些“List”对象不仅仅是简单的数组。我想你可能不得不做这样的事情(没有保证,因为我无法测试这个):

function findObject( list, property, value ) {
  var i, elem;
  for (i = 0; i < list.length; ++i)
    elem = list.getAt(i);
    if (elem != null && elem[property] == value)
      return list[i];
}