我想知道通过id检索对象的更快方法是什么,并考虑到存储它的结构可能不同。 JS中是否有任何本机函数用于此操作?
var source = {
"page": [{
"id": "1",
"site": "",
"items": [{
"id": "2"
}, {
"id": "3",
"anotherItem": [{
"id": "4"
}, {
"id": "5"
}]
}]
}, {
"id": "6"
}]
};
结构可能完全不同,脚本应始终能够获取包含id
的对象。
{
"smtElse": {
"id": "1"
}
}
答案 0 :(得分:4)
不,没有原生功能。
最快的方法是迭代对象的唯一方法,可能是递归,寻找ID并返回你想要的东西。
答案 1 :(得分:0)
我使用以下脚本解决了,因为似乎没有可用的原生功能。
var data = {
item: [
{
itemNested: [
{
itemNested2: [{
id: "2"
}
]
}
]
}
]
};
function findById(obj, id) {
var result;
for (var p in obj) {
if (obj.id == id) {
return obj;
} else {
if (typeof obj[p] === 'object') {
result = findById(obj[p], id);
if (result) {
return result;
}
}
}
}
return result;
}
var result = findById(data, "2");
console.log(result);
答案 2 :(得分:-1)
you can try this
<script type="text/javascript">
var re = /"id":\s+"(.*?)"/;
var sourcestring = "source string to match with pattern";
var results = [];
var i = 0;
for (var matches = re.exec(sourcestring); matches != null; matches = re.exec(sourcestring)) {
results[i] = matches;
for (var j=0; j<matches.length; j++) {
alert("results["+i+"]["+j+"] = " + results[i][j]);
}
i++;
}