从对象数组中获取键值

时间:2015-04-17 06:23:42

标签: javascript json

我正在尝试从对象数组中提取所有键的名称,将时间复杂度保持为n(仅限一个循环)。数组如下:

var addressArray = [{"city":"New York"},{"country":"USA"},{"zip": 45677}];

我想提取以下内容:

var addressKeys = ["city", "country", "zip"].

我能够做到这一点,首先循环遍历数组,然后在obj循环中使用一个键,但这并不好。备选方案是最受欢迎的。

4 个答案:

答案 0 :(得分:3)

使用Object.keys获取密钥。

if (typeof Object.keys !== "function") {
    (function() {
        Object.keys = Object_keys;
        function Object_keys(objectToGet) {
            var keys = [], name;
            for (name in objectToGet) {
                if (objectToGet.hasOwnProperty(name)) {
                    keys.push(name);
                }
            }
            return keys;
        }
    })();
}

答案 1 :(得分:3)

根据您的定义addressArray是一个对象而不是一个数组。

您可以使用Object.keys()获取对象的键数组。

var addressKeys = Object.keys(addressArray);

要支持不支持Object.keys的{​​{3}},您可以使用older browsers

答案 2 :(得分:2)

使用for-in循环访问每个key-value对,然后推送到新阵列:(推荐)

for(var index in addressArray){
    addressKeys.push(index)
}

另一种解决方案是:

var addressKeys = Object.keys(addressArray)

比较慢。

答案 3 :(得分:1)

请注意,我用[}' s切换了[]' s。

var addressObject = {"city":"New York", "country":"USA", "zip": 45677};

var keys = [];

for(var address in addressObject)
{
    keys.push(address);
}

console.log(keys);