javascript - javascript 字符串数组到 json 对象
问题描述
我有这个数组:
data = [
"Id = 2",
"time = 10:59",
"Topic = xxxxxxxxxxxxxxxx",
"GUEST3",
"Role = GS",
"Infos = Connecticut",
"GUEST4",
"Role = HS",
"Infos = Delaware",
"GUEST5",
"Role = CS",
"Infos = Hawaii"
]
我怎样才能使它成为这样的 JSON 对象:
data = [
{
Id : 2,
time : 10:5',
Topic : xxxxxxxxxxxxxxxx,
GUEST3:
{
Role : GS,
Infos : Connecticut,
}
GUEST4:
{
Role : HS,
Infos : Delaware,
GUEST5:
{
Role : CS,
Infos : Hawaii
}
}
解决方案
这是一些可以做到的代码。
我已经对代码进行了注释,但基本要点是它将查看数组中的每个字符串,然后确定它是键和值还是对象的另一层。
const data = ["Id = 2", "time = 10:59", "Topic = xxxxxxxxxxxxxxxx", "GUEST3", "Role = GS", "Infos = Connecticut", "GUEST4", "Role = HS", "Infos = Delaware", "GUEST5", "Role = CS", "Infos = Hawaii"];
// Declaring new object
let obj = {};
// Place to remember current level of object
let level;
// For every bit of the array
for (let item of data) {
// If it contains an equals
if (item.includes('=')) {
// Split it into two stings
let split = item.split('=');
let key = split[0].trim();
let cont = split[1].trim();
// If we're already on a lower level like GUEST3 put it in there
if (level) {
obj[level][key] = cont
} else {
// Or just place the new data at the top level
obj[key] = cont
}
} else {
// If there's no equals we want to go down a layer
level = item;
obj[item] = {};
}
}
console.log(obj)
如果您难以理解正在发生的事情,我希望这会有所帮助,请随时发表评论。
编辑:
我将您必须做出的三个答案混合在一起,以做出更好的答案。
const data = ["Id = 2", "time = 10:59", "Topic = xxxxxxxxxxxxxxxx", "GUEST3", "Role = GS", "Infos = Connecticut", "GUEST4", "Role = HS", "Infos = Delaware", "GUEST5", "Role = CS", "Infos = Hawaii"]
let aO = o = {};
data.map(a => a.split(' = ')).forEach(e => {e.length > 1 ? aO[e[0]] = e[1] : aO = o[e] = {}});
console.log(o);
推荐阅读
- python - 如何使用标记值通过while循环平均用户输入?
- javascript - 方法必须在对象内才能链接在一起吗?
- database - 将多个 Alembic 版本表合并为一个表
- javascript - 我如何从下拉列表中获取项目作为输出两次或三次或任意次数作为用户通过 JavaScript 输入
- uwp - 是否可以授予 UWP 应用程序在安装时访问下载文件夹的权限?
- python - 如何获取熊猫中两列的组合唯一值的数量
- ansible - 用值列表更新用户字典
- python - Python挂在`import paramiko`上
- android - MLKit 自定义模型中的不准确预测
- android - Dagger 无法 @Inject 同一类的某些实例