我构建了以下列表:
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(即没有找到)。我哪里错了?
答案 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];
}