【问题标题】:How to use a string to generate an array? [closed]如何使用字符串生成数组? [关闭]
【发布时间】:2018-05-23 23:55:16
【问题描述】:

我有一个这样格式的长字符串:

A from $37
B from $46
D from $70
P from $61
S from $40

这是预期的结果:

 [{A:$37},{B:$46},{D:$70},{P:$61},{S:$40}]

如何从我的字符串创建这个输出?

【问题讨论】:

  • 你有一个任务,而不是一个问题。 SO 不是免费的编码服务。我对这个问题投了反对票,因为没有研究证据或试图编写自己的解决方案。太宽泛了。

标签: javascript arrays string list dictionary


【解决方案1】:

var strings = ['A from $37','B from $46','D from $70','P from $61','S from $40'];

var outputArr = [];

for(var i = 0 ; i < strings.length;i++){
  var items = strings[i].split(" from ");
  outputArr.push({Key:items[0], Value:items[1]});  
}

console.log(outputArr);

您将无法在 JavaScript 对象中创建动态键,

您可以将其作为键值对象添加到数组中

这里是sn-p的demo

【讨论】:

  • 谢谢你,但在这里你使用var strings = ['A from $37','B from $46','D from $70','P from $61','S from $40']; 不是你使用的数组,而是一个看起来像“A 从 $37 B 从 $46 D 从 $70 P 从 $61 S 从 $40”的字符串;
  • 你需要制作字符串数组..
  • 怎么办,因为该字符串有很多空间,如果您有解决方案,请编辑您的答案
  • 在 es6 中,您可以拥有动态密钥,如我的解决方案所示
  • @charlietfl 太好了.. 谢谢 +1 frm me
【解决方案2】:

使用正则表达式匹配和 es6 动态对象键

const str = `
A from $37
B from $46
D from $70
P from $61
S from $40`;

const objectMapper = (s) => {
  const arr = s.match(/(^[a-z]+\b)|(\$.+)/gi);
  return {[arr[0]]: arr[1]};
};
const res = str.trim().split('\n').map(objectMapper)


console.log(JSON.stringify(res))

【讨论】:

    【解决方案3】:

    你可以用\n分割它们,然后再用from分割

    var f = `A from $37
    B from $46
    D from $70
    P from $61
    S from $40`;
    var items = new Array();
    f.split('\n').forEach((i) => {
       var j = i.split(' from ');
       var json = '{"'+j[0]+'":"'+j[1]+'"}';
       items.push(JSON.parse(json));
    });
    console.log(items);

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-06-23
      • 2020-12-11
      • 2021-12-04
      • 2017-11-18
      • 2022-12-03
      • 2014-05-20
      • 1970-01-01
      • 2013-02-19
      相关资源
      最近更新 更多