考虑有一个我们想要转换的 json 对象
const my_object = {
"key1": "value1",
"key2": "value2",
"key3": "value3"
}
您可以使用几种解决方案:
1. Object.keys()和Object.values()
这些函数将任何对象转换为数组。一个返回一个包含所有键的数组,另一个返回所有值:
console.log(Object.keys(my_object))
// Output : ["key1", "key2", "key3"]
console.log(Object.values(my_object))
// Output : ["value1", "value2", "value3"]
我不确定是否理解最初的问题,但解决方案可能是
data.addRows(Object.values(my_object));
2. Object.entries()
此功能是上述两者的混合:
console.log(Object.entries(my_object))
// Output : [["key1", "value1"], ["key2", "value2"], ["key3", "value3"]]
它对最初的问题没有用,但是这个功能非常有用,我不得不提到它。特别是当value_是嵌套对象时。假设我们的值是这样的对象:
const my_object = {
"key1": {"a": 1, "b": 2},
"key2": {"y": 25, "z": 26},
"key3": {"much": "stuff"}
}
我们希望得到一个像这样的数组
my_array = [
{"key": "key1", "a": 1, "b": 2},
{"key": "key2", "y": 25, "z": 26},
{"key": "key3", "much": "stuff"}
]
我们需要Object.entries()
用它们的值来获取我们所有的密钥。我们将从一个过于详细的代码开始:
my_array = Object.entries(my_object).map(function(entry){
key = entry[0];
value = entry[1];
nested_object = value;
nested_object.key = key;
return nested_object;
});
console.log(my_array);
// Expected output : [
// {"key": "key1", "a": 1, "b": 2},
// {"key": "key2", "y": 25, "z": 26},
// {"key": "key3", "much": "stuff"}
//]
我们可以使用扩展运算符来简化我们的代码:
my_array = Object.entries(my_object).map(entry => {"key": entry[0], ...entry[1]});
console.log(my_array);
// Expected output : [
// {"key": "key1", "a": 1, "b": 2},
// {"key": "key2", "y": 25, "z": 26},
// {"key": "key3", "much": "stuff"}
//]