2014-11-22 73 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);