0

I have the following list constructed:

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" });

I want to be able to get the index of the list where the ID is 6666. My attempt thus far was to do the following:

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

But I am getting -1 (i.e. not found). Where am I going wrong?

4

1 に答える 1

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 についてはあまり (何も) 知りませんが、これらの「リスト」オブジェクトは単純な配列ではないようです。このようなことをしなければならないかもしれないと思います(これをテストできないため、保証はありません):

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];
}
于 2013-06-17T13:42:34.947 に答える