【发布时间】:2015-10-02 16:49:52
【问题描述】:
我一直在研究一个递归循环遍历 JSON 对象的函数,并希望使用它找到的每个键作为元素的类值来更改 jQuery 中该元素的 .text 值。因此,到目前为止,一切都很好,因为我也能够递归地获取密钥,我正在努力寻找一种方法来输入所有这些密钥以获取每个 json 对象的值:
function eachRecursive(obj, aKey)
{
aKey = aKey === null ? '' : aKey;
for (var k in obj)
{
if (typeof obj[k] == "object" && obj[k] !== null)
{
aKey += k + '_';
eachRecursive(obj[k], aKey);
}
else
{
if (obj.hasOwnProperty(k))
{
console.log(obj[k]);
if ($('.player_' + aKey + k).length)
{
var props = aKey.split('_');
props.clean("");
$('.player_' + aKey + k).text(obj[k]);
}
}
// might not even need this.
aKey = '';
}
}
}
所以,text(obj[k]) 在这里不起作用,因为 json 正在递归地遍历对象内部的对象。
所以,aKey 是一个字符串,用于检查类是否存在(应该将 json 对象的每个键附加到其中。应该检查是否存在,如果确实存在,则应该将值插入该元素的.text。
但我在这里苦苦思索的是如何从插入到名为props 的数组中的所有键中获取值。所以我需要使用数组中的每个值作为obj对象的键来获取对应的json值。
有人可以帮我吗?
添加到Array 的.clean 原型只是简单地删除了数组中的所有空值。特别是最后一个数组索引(因为它在_ 上拆分)。
如何将数组值传入obj获取json值?
例如,如果:
var props = ['name', 'first', 'last'];
// How to do this so we can get the value?
obj['name']['first']['last'][k]
【问题讨论】:
标签: javascript jquery arrays json