次のような JavaScript オブジェクトを受け取る簡単な JavaScript 関数を作成しようとしています。
{
"sample[one]": "value 1",
"sample[hard][damn_you[0]]": "this 1",
"sample[hard][damn_you[1]]": "this 2"
}
そして、それを次のように変換します。
{
"[sample][one]": "value 1",
"[sample][hard][damn_you][0]": "this 1",
"[sample][hard][damn_you][1]": "this 2"
}
微妙だけど大きな違い。テキストの最初の部分を角かっこで囲むという最初の部分はすでに作成しましたが、入れ子になった角かっこを取り出して出すとなると、途方に暮れます。私はかなり長い間試みてきましたが、成功しませんでした。これが私がこれまでに持っているものです:
var data = {
"sample[one]": "value 1",
"sample[hard][damn_you[0]]": "this 1",
"sample[hard][damn_you[1]]": "this 2"
},
subset = /^([a-z0-9-_]+?)\[/i;
for (var key in data) {
if (subset.test(key)) {
data[key.replace(subset,'[$1][')] = data[key];
} else {
data[key.replace(/^(.+)$/,'[$1]')] = data[key];
}
delete data[key];
}
これは次のように出力されます:
{
"[sample][one]": "value 1",
"[sample][hard][damn_you[0]]": "this 1",
"[sample][hard][damn_you[1]]": "this 2"
}
しかし、ネストされた角かっこを抽出することになると途方にくれます。何か案は?