gpt4 book ai didi

javascript 字符串到关联对象

转载 作者:行者123 更新时间:2023-12-03 07:17:41 24 4
gpt4 key购买 nike

我只是想知道是否有一种简单的方法可以从需要双重拆分的字符串创建关联对象,该字符串是 api 调用的结果,因此对象的长度可能会改变。

例如,如果我有一个如下所示的字符串:

var infoValue = 'Loan Date~Loan Number~Loan Amount|15/03/2016~1042~620|15/03/2016~1044~372';

我想要一个看起来像这样的对象:

[
{
"Loan Date":"15/03/2016",
"Loan Number":"1042",
"Loan Amount":"620",

},
{
"Loan Date":"15/03/2016",
"Loan Number":"1042",
"Loan Amount":"620",

}
]

我现在正在做的事情是这样的

var res = infoValue.split("|"); 
var activeLoans = new Array();
for(field in res) {
if(res[field] != ''){
activeLoans.push(res[field]);
}
}

for(field in activeLoans){
var row = activeLoans[field];
rowSplit = row.split("~");
}

但我对这种方法不满意,因为我需要创建一个表来显示这些数据,并且我获取此 api 的站点可能会更改字符串响应的顺序,或者可能添加其他值

最佳答案

你所做的就是你能做的一切,尽管我不会将 for..in 用于典型的数组。您应该能够处理任何值序列,只要 header 与其余数据一致即可,例如

var infoValue = 'Loan Date~Loan Number~Loan Amount|15/03/2016~1042~620|15/03/2016~1044~372';

function parseInfoValue(s) {
var b = s.split('|');
var header = b.shift().split('~');
return b.reduce(function(acc, data) {
var c = data.split('~');
var obj = {};
c.forEach(function(value, i){
obj[header[i]] = value;
})
acc.push(obj);
return acc;
},[]);
}

var x = parseInfoValue(infoValue);

document.write(JSON.stringify(x));

无论每条记录中有多少项,这都会创建所需的结构,它只需要 header 部分中的每个项目的标签以及每个数据部分中的每个项目的值(可能为空)。

编辑

再想一想,我不知道为什么当 reduce 是明显的候选者时,我在内部使用 forEach :

var infoValue = 'Loan Date~Loan Number~Loan Amount|15/03/2016~1042~620|15/03/2016~1044~372';

function parseInfoValue(s) {
var b = s.split('|');
var header = b.shift().split('~');
return b.reduce(function(acc, data) {
acc.push(data.split('~').reduce(function(obj, value, i) {
obj[header[i]] = value;
return obj;
}, {}));
return acc;
}, []);
}

var x = parseInfoValue(infoValue);

document.write(JSON.stringify(x));

关于javascript 字符串到关联对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36346438/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com