UPDATE
https://jsbin.com/kiqeneluzi/1/edit?js,console https://jsbin.com/kiqeneluzi/1/edit?js,console
我做的唯一不同的事情是使用正则表达式获取密钥来维持顺序
let j = "{\"b\": \"bar\", \"a\": \"foo\", \"1\": \"value\"}"
let js = JSON.parse(j)
// Get the keys and maintain the order
let myRegex = /\"([^"]+)":/g;
let keys = []
while ((m = myRegex.exec(j)) !== null) {
keys.push(m[1])
}
// Transform each key to an object
let res = keys.reduce(function (acc, curr) {
acc.push({
[curr]: js[curr]
});
return acc
}, []);
console.log(res)
ORIGINAL
如果我明白你想通过选项 2 实现什么目标。这就是我的想法。
https://jsbin.com/pocisocoya/1/edit?js,控制台 https://jsbin.com/pocisocoya/1/edit?js,console
let j = "{\"b\": \"bar\", \"a\": \"foo\"}"
let js = JSON.parse(j)
let res = Object.keys(js).reduce(function (acc, curr) {
acc.push({
[curr]: js[curr]
});
return acc
}, []);
console.log(res)
基本上得到了对象的所有key,然后进行reduce。 reducer 函数将每个键转换为一个对象