我有一个字符串集-
"uid:ID1,name:Name1,uid:ID2,name:Name2"
我想将“ uid:ID1,name:Name1”映射到
以下格式
{
uid :'ID1',
name: "Name1"
}
但是要使它具有与通过字符串集传递的一样多的属性集。
因此对于带有“ 2套”的输入字符串,我需要它来进行以下输出。
{
uid :'ID1',
name: "Name1"
},
{
uid :'ID2',
name: "Name2"
}
希望有人可以帮助我:)
答案 0 :(得分:1)
使用下面的main
函数:
const main = str => {
// split on each comma
const arr = str.split(',');
// put back elements by pairs
const pairs = [];
for (let i=0; i<arr.length; i+=2) {
let o = {};
o.uid = arr[i].split(':')[1];
o.name = arr[i+1].split(':')[1];
pairs.push(o);
}
return pairs;
}
console.log(main('uid:ID1,name:Name1'));
console.log(main('uid:ID1,name:Name1,uid:ID2,name:Name2'));
这假定输入字符串的格式正确,是由uid:...,name:...
连接的,
(无任意键,无可选键)的重复。
答案 1 :(得分:0)
假设您希望对象和键是任意的...
console.log(
"uid:ID1,name:Name1,uid:ID2,name:Name2"
.split(/[,:]/)
.reduce((res, val, i, arr) => {
if (i % 4 === 0) {
res.push({})
}
if (i % 2) {
res[res.length - 1][arr[i - 1]] = arr[i]
}
return res
}, [])
);