【问题标题】:How to join Array Values as keys to get jSON object value如何加入数组值作为键来获取 JSON 对象值
【发布时间】: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


    【解决方案1】:

    遍历props 数组并使用括号表示法依次查找值。

    var value = obj;
    for (var i = 0; i < props.length; i++) {
        value = value[props[i]];
    }
    value = value[k];
    

    【讨论】:

    • 您好,谢谢,不过还需要说明props是空数组的时候,还是需要用到k
    • 这种情况下直接返回value[k]
    • 这些是nested json 对象,位于具有键的属性中。您需要整个键深度,所有键才能获得值。
    • 可能还有对象中的对象。需要完整的密钥结构才能获得价值。
    • 但是您应该已经使用了 props 数组中的所有其他键,因此在结果上调用 [k] 就足够了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-31
    相关资源
    最近更新 更多