我有一个来自ajax调用的以下json输出,
{17: {access: "1",id: "2"}}
我想迭代并获得id
的值,我使用下面的代码,但我在控制台中收到undefined
的错误。
$(obj).each(function(i, val) {
console.log(val.id);
});
我做错了什么?
答案 0 :(得分:4)
你可以这样做:
var obj = {17: {access: "1",id: "2"}}
// Native JS
for (var k in obj) {
console.log(obj[k].id)
}
// JQuery
// Documentaion: http://api.jquery.com/jquery.each/
$.each(obj, function(i, val) {
console.log(val.id);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
希望有帮助,有任何疑问吗?
根据要求,我想指出术语“JSON-Object”并不存在。您正在使用一个简单的JavaScript-Object,它可以由JSON-String
组成答案 1 :(得分:2)
在这种情况下,您应该使用jQuery
utils
var obj = {17: {access: "1",id: "2"}}
$.each(obj, function(i, val) {
console.log(val.id);
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
&#13;
答案 2 :(得分:1)
您必须使用$.each(array, callback)
:
var obj = {
17: { id: "2", access: "1" },
23: { id: "8" }
};
$.each(obj, function(i, val) {
console.log(val.id);
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="http://gh-canon.github.io/stack-snippet-console/console.min.js"></script>
&#13;
答案 3 :(得分:0)
请尝试以下代码。
var obj = {17: {access: "1",id: "2"}};
if( $.isPlainObject(obj) ) {
$(obj).each(function(i, val) {
console.log(val.id);
});
}
else {
console.log('invalid Object');
}
答案 4 :(得分:0)
以递归方式使用Object.keys()
和Array.prototype.some()
的解决方案。
var object = { 17: { access: "1", id: "2" } };
function find(p, o) {
var result;
Object.keys(o).some(function (k) {
if (k === p) {
result = o[k];
return true;
}
if (typeof o[k] === 'object') {
result = find(p, o[k]);
}
});
return result;
}
document.write('<pre>' + JSON.stringify(find('id', object), 0, 4) + '</pre>');
&#13;
答案 5 :(得分:0)
您正在制作JSON的jQuery对象,然后迭代该jQuery对象。请查看jQuery.each()的API文档:
你应该像这样使用它:
jQuery.each(object, callback)
其中object
是要迭代的对象,callback
是要为object
中的每个键运行的回调函数。
var obj = {
17: {
access: "1",
id: "2"
},
18: {
access: "2",
id: "5"
}
};
$.each(obj, function(i, val) {
document.body.innerHTML += val.id + "<br>";
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
&#13;