NodeJS-字符串到数组集

时间:2019-07-14 11:36:49

标签: node.js

我有一个字符串集-

"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"
        }

希望有人可以帮助我:)

2 个答案:

答案 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
  }, [])
);