在特定ID -JavaScript或jQuery上的一系列对象中获取对象的索引



我有以下对象数组:

[
{
"id": 1,
"name": "Leanne Graham",
"username": "Bret",
"email": "Sincere@april.biz",
"phone": "1-770-736-8031 x56442",
"website": "hildegard.org",
},
{
"id": 2,
"name": "Ervin Howell",
"username": "Antonette",
"email": "Shanna@melissa.tv"
"phone": "010-692-6593 x09125",
"website": "anastasia.net"
},...];

我被传递给ID为2。我想要id = 2的对象数组的索引。如何在JavaScript或jQuery中完成?

Array#forEach函数在obj上迭代,如果实际索引与参数中的给定 id相同,请将其分配到 objId actible中。

如果没有给定的id的对象 - 函数将记录-1

let obj = [{id:1,name:"Leanne Graham",username:"Bret",email:"Sincere@april.biz",phone:"1-770-736-8031 x56442",website:"hildegard.org"},{id:2,name:"Ervin Howell",username:"Antonette",email:"Shanna@melissa.tv",phone:"010-692-6593 x09125",website:"anastasia.net"}];
function checkId(obj, id) {
  let objId = -1;
  obj.forEach((v,i) => v.id == id ? objId = i : v);
  console.log(objId);
}
checkId(obj, 2);
checkId(obj, 4);

使用Array#findArray#indexOf

另一种方法

let obj = [{id:1,name:"Leanne Graham",username:"Bret",email:"Sincere@april.biz",phone:"1-770-736-8031 x56442",website:"hildegard.org"},{id:2,name:"Ervin Howell",username:"Antonette",email:"Shanna@melissa.tv",phone:"010-692-6593 x09125",website:"anastasia.net"}];
function checkId(obj, id) {
  let objId = obj.indexOf(obj.find((v,i) => v.id == id)) || -1;
  console.log(objId);
}
checkId(obj, 2);
checkId(obj, 4);

您可以使用每个函数来做到这一点:

var json = [
    {"id":"1","tagName":"apple"},
    {"id":"2","tagName":"orange"},
    {"id":"3","tagName":"banana"},
    {"id":"4","tagName":"watermelon"},
    {"id":"5","tagName":"pineapple"}
];
$.each(json, function(idx, obj) {
  if(obj.id == 2){
    alert(idx);//will alert index where id = 2
  }
});

有关更多详细信息,请访问:https://www.mkyong.com/jquery/jquery-loop-ob-json-string-each-each-example/

如果有一个或多个匹配项,此功能将返回索引数组:

function getIDs(obj,id) {
  var ret = [];
  obj.forEach((val,i) => val.id == id ? ret.push(i) : val); 
  return(ret);
}
var ids = getIDs(object,2);
console.log(ids);

最新更新