2014-11-22 79 views
1

如果存在具有特定id值的鍵,我需要在JSON對象數組中搜索。如果存在,返回它,如果沒有返回-1或任何Javascript |搜索JSON數組中的特定鍵值

var array = [{'id': 1, 'name': 'xxx'}, 
      {'id': 2, 'name': 'yyy'}, 
      {'id': 3, 'name': 'zzz'}]; 

var searchValue --> id==1 

應該是這樣的?

function search_array(array,valuetofind) { 
if array.indexof({'id': valuetofind}) != -1 { 
    return array[array.indexof({'id': valuetofind})] 
} else { 
    return {'id': -1} 
} 
} 
+0

沒了,因爲'{ 'ID':valuetofind}'創建一個新對象字面是從每一個其他對象不同。 (即使不是這樣,它仍然不等於數組中的對象,因爲它缺少其他鍵)。 – 2014-11-22 12:39:19

回答

3

如果存在匹配,則返回對象;如果不存在匹配,則返回-1。

function search_array(array,valuetofind) { 
    for (i = 0; i < array.length; i++) { 
     if (array[i]['id'] === valuetofind) { 
      return array[i]; 
     } 
    } 
    return -1; 
} 
0

如果你只需要確保ID存在試試這個:

function search_array(array, valuetofind) { 
    var exists = false; 
    for(i=0;i<array.length;i++) { 
     if(array[i].id == valuetofind) { 
      exists = true; 
     } 
    } 
    return exists; 
} 

我的方法可能是通過各部分有點長篇大論騎自行車,但我檢查,它的工作原理

search_array(array, 4) [False] 
search_array(array, 1) [True] 
+2

從條件「If exists,return it,」 – 2014-11-22 12:58:01

0

試試這個

search(nameKey, myArray){ 
    for (var i=0; i < myArray.length; i++) { 
     if (myArray[i].name === nameKey) { 
       return myArray[i]; 
     } 
    } 
} 
var array = [ 
    { name:"string 1", value:"this", other: "that" }, 
    { name:"string 2", value:"this", other: "that" } 
]; 

var resultObject = search("string 1", array);