【问题标题】:How to make object of comma separated elements [closed]如何制作逗号分隔元素的对象[关闭]
【发布时间】:2021-02-11 08:50:14
【问题描述】:

我正在开发一个 CSV 解析器,其中我有数组中的数据,例如

["Jonas", "Sched ", "jonas@sch.com", "ph:34988934", "data 1,data 2", "data 3,data 4", "data 5, data 6"]

我想要实现的目标是创建包含逗号 (,) 的数组元素的对象数组。

预期结果:

 let array=  ["Jonas", "Sched ", "jonas@sch.com", "ph:34988934", items:[{name:data 1, temp:data
 2},{name:data 3, temp:data 4},{name:data 5, temp:data 6}]

【问题讨论】:

  • 您的预期输出在语法上无效。你的意思是例如{name: "data 3", temp: "data 4"}?还有你尝试过什么,它到底有什么问题?
  • 实际上,我正在解析 CSV 数据,我想用逗号分隔符表示对象数据,例如 (data1, data 2) 。最后,我会将其转换为 {name:data 1, temp: data 2) 。我想在 string 中读取这个逗号分隔符。你能帮我如何从具有逗号分隔符的字符串中制作对象,例如"data1,data2"
  • 具体哪一部分有问题?你知道如何检查一个字符串是否有(完全是一个?)逗号吗?怎么分呢?更具体一点,请提供 minimal reproducible example 来说明您目前所拥有的内容。

标签: javascript arrays reactjs ecmascript-6


【解决方案1】:

您的第一步是从原始数组中提取内容。这可以通过destructuring assignment 来完成:

const [name, company, email, phone, ...itemCsvs] = yourOriginalArray;

注意...itemCsvs;它将前四项之后剩余的所有内容解构为变量名为itemCsvs 的数组。

itemCsvs 中的每个项目看起来像逗号分隔的对。您可以使用这些字符串的split method 将它们转换为字符串数组:

const itemPairs = itemCsvs.map(str => str.split(','));

itemPairs 现在是一个字符串数组。

[
  ["data1", "data2"],
  ["data3", "data4"],
  ["data5", "data6"]  
]

然后将它们转换为对象就像再次映射一样简单:

const items = itemPairs.map(([name, temp]) => ({ name, temp }));

现在您只需重新组装零件即可。为了更紧凑地组合在一起:

const originalData = [
  "Jonas", "Sched ", "jonas@sch.com", "ph:34988934",
  "data 1,data 2", "data 3,data 4", "data 5, data 6"
];

const [name, company, email, phone, ...itemCsvs] = originalData;

const result = {
  name, company, email, phone,
  items: itemCsvs.map(item => {
    const [name, temp] = item.split(',');
    return { name, temp };
  })
};

console.log(result);

【讨论】:

  • 感谢您的回复。如果我们像昨天讨论的那样有多个数组怎么办。我需要用多个数组来拟合这个例子
  • 我想使用同样的逻辑来创建一个像{dataItems:[{.........,items:[......] },{........,items:[] } ] 这样的数组。你能帮帮我吗
  • 只需像在另一个问题中一样在数组映射中运行相同的逻辑。
猜你喜欢
  • 2013-12-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多