如何在对象数组中通过id查找对象
How to find object by id in array of objects?
我有这个json文件:
var data = [{
"id": 0,
"parentId": null,
"name": "Comapny",
"children": [
{
"id": 1235,
"parentId": 0,
"name": "Experiences",
"children": [
{
"id": 3333,
"parentId": 154,
"name": "Lifestyle",
"children": []
},
{
"id": 319291392,
"parentId": 318767104,
"name": "Other Experiences",
"children": []
}
]
}
]
}];
我需要通过id找到对象。例如,如果需要查找id为:319291392的对象,我必须获取:
{"id": 319291392,"parentId": 318767104,"name": "Other Experiences","children": []}
我该怎么做呢?
我尝试使用这个函数:
function findId(obj, id) {
if (obj.id == id) {
return obj;
}
if (obj.children) {
for (var i = 0; i < obj.children.length; i++) {
var found = findId(obj.children[i], id);
if (found) {
return found;
}
}
}
return false;
}
但是它不起作用,因为它是一个对象数组。
如果您的起始点是一个数组,您需要稍微颠倒一下您的逻辑,从数组开始,而不是从对象开始:
function findId(array, id) {
var i, found, obj;
for (i = 0; i < array.length; ++i) {
obj = array[i];
if (obj.id == id) {
return obj;
}
if (obj.children) {
found = findId(obj.children, id);
if (found) {
return found;
}
}
}
return false; // <= You might consider null or undefined here
}
然后var result = findId(data, 319291392);
…查找具有id
319291392的对象。
生活例子
这应该对你有用:-
var serachById = function (id,data) {
for (var i = 0; i < data.length; i++) {
if(id==data[i].id)
return data[i];
if(data[i].children.length>0)
return serachById(id,data[i].children);
};
return null;
}
console.log(serachById(0,data));
下面是另一个使用对象表示法的简单解决方案。即使您决定稍后去掉数组并使用对象表示法,这种解决方案也可以工作。因此代码将保持不变。
它也支持没有子元素的情况。
function findId(obj, id) {
var current, index, reply;
// Use the object notation instead of index.
for (index in obj) {
current = obj[index];
if (current.id === id) {
return current;
}
reply = findId(current.children, id);
if (reply) {
return reply;
}
// If you reached this point nothing was found.
console.log('No match found');
}
}
console.log(findId(data, 319291392));
照做:
for (var obj in arr) {
if(arr[obj].id== id) {
console.log(arr[obj]);
}
}
相关文章:
- 为什么我的猫鼬对象 Id 请求返回一个空数组
- 基于变量创建json对象id
- Grails richui自动完成将对象传递给函数或更新对象ID
- 如何在jQuery中获取对象ID并将其与其他字符串组合
- 如何在 Javascript 中按 prev 对象 id 对对象数组进行排序
- 猫鼬对象 ID 不用作函数中的参数
- 如果对象 id 相同,如何合并对象
- 猫鼬对象 ID 不作为函数中的参数工作
- Parse.com / Javascript - 将用户对象ID字符串保存为用户指针
- 在 Javascript 中按对象 ID 分组
- JavaScript 通过 ID 获取元素与对象 ID
- 解析:保存后获取对象 ID
- 使用 jQuery 将点击的对象 ID 转换为变量以进行优化
- 返回匹配对象 id 的下一个和上一个对象
- 如何获取具有指针字段的对象 ID 的记录
- 使用javascript在parse.com中迭代对象id
- 如何在javascript中访问当前rails对象id
- 无法按对象id查询对象
- aspx客户端事件(javascript)中的发件人对象ID
- 通过对象id获取对象属性