我有JavaScript對象等作爲如何將對象轉換爲關聯數組?
var obj = {
param1 : {
subParam1: 10,
subParam2: 20
},
param2: 123
}
如果需要轉換隻在根與鍵對象
obj = {
'param1.subParam1' : 10,
'param1.subParam2' : 20,
'param2' : 123
}
我有JavaScript對象等作爲如何將對象轉換爲關聯數組?
var obj = {
param1 : {
subParam1: 10,
subParam2: 20
},
param2: 123
}
如果需要轉換隻在根與鍵對象
obj = {
'param1.subParam1' : 10,
'param1.subParam2' : 20,
'param2' : 123
}
你可以寫一個簡單的遞歸函數:
function flatten(obj) {
var result = {},
temp, key, subkey;
for (key in obj) {
if (obj.hasOwnProperty(key)) {
if (Object.prototype.toString.call(obj[key]) == '[object Object]') {
temp = flatten(obj[key]);
for (subkey in temp) {
result[key + '.' + subkey] = temp[subkey];
}
}
else result[key] = obj[key];
}
}
return result;
}
看起來像預期的那樣工作:
{param1.subParam1: 10, param1.subParam2: 20, param2: 123}
+1的工作答案http://jsfiddle.net/chridam/3513LLup/ – chridam 2014-09-04 13:18:43
有些人可能稱之爲密集型,有些人可能稱之爲緊湊型,有些可能稱之爲晦澀型,有些可能稱之爲優雅型。
function flatten_object_into_dot_notation(obj) {
return function _flatten(obj, prefix, result) {
return Object.keys(obj).reduce(function(_, key) {
var val = obj[key];
key = prefix + key;
if (val && typeof val==='object') { _flatten(val, key + '.', result); }
else { result[key] = val; }
return result;
}, result);
}(obj, '', {});
}
並且[如果您想以另一種方式...](http://stackoverflow.com/a/11236014/712294)。 – 2014-09-04 13:08:37