如何将逗号和分号分隔的字符串拆分为二维数组

9

假设我有一个变量users,它包含以下文本字符串,其中每个用户由分号分隔,每个用户的每个属性由逗号分隔:

Bob,1234,Bob@example.com;Mark,5678,Mark@example.com

我应该如何将此内容分割成一个名为userArray的多维数组变量,其样式如下所示:
[
    [Bob,1234,Bob@example.com],
    [Mark,5678,Mark@example.com]
]

使用JavaScript?


1
使用CSV库。 - Bergi
你尝试过使用 split 吗? - Bergi
你是指"Bob,1234,Bob@example.com"在数组中是一个条目还是三个?如果你希望它们作为一个条目,请使用Nenad的答案。如果你想要三个条目,请使用x.split(";").map((y) => y.split(",")) - Josh C.
三。因此,有一个包含两个元素的数组,每个元素都有一个包含三个元素的数组。 - user2363207
我认为Nenad编辑过的答案就是我需要的。 - user2363207
6个回答

10
你可以使用 split()map() 完成这个操作。
var str = 'Bob,1234,Bob@example.com;Mark,5678,Mark@example.com';
var result = str.split(';').map(e => e.split(','));
console.log(result)

3
您可能的意思是e => e.split(',') - Bergi
1
单表达式箭头函数中的 return 有什么意义? - Oriol

2
你只需要进行两次拆分。首先通过';'进行拆分,然后对结果数组中的每个元素通过','进行拆分。类似这样:
"Bob,1234,Bob@example.com;Mark,5678,Mark@example.com"
    .split(';')
    .map(function(sub) { 
        return sub.split(',') 
    });

只需在您的浏览器控制台中运行上面的片段,您将看到:

[
  Array[3]0: "Bob"1: "1234"2: "Bob@example.com"length: 3__proto__: Array[0],
  Array[3]0: "Mark"1: "5678"2: "Mark@example.com"length: 3__proto__: Array[0]
]

看起来很不错,在Chrome的调试器控制台选项卡中使用F12键很容易运行。和Nenad的想法一样,所以我选择了他的答案,因为我先看到了它。 - user2363207

0
如果您正在寻找将数组中的每个元素放入一行的解决方案。
这里有一个解决方案:
b.split(';').map(e => e.split(',')).reduce((acc, cur) => cur.concat(acc), []).filter(e => !!e)

0

你只需要这样做

var users = 'Bob,1234,Bob@example.com;Mark,5678,Mark@example.com';
    var userInfo = users.split(';');
    for (var i = 0, len = userInfo.length; i < len; i++) {
        userInfo[i] = userInfo[i].split(',');
    }
console.log('userInfo', userInfo);


0
你可以先按分号分割,然后再按逗号分割。

var str = 'Bob,1234,Bob@example.com;Mark,5678,Mark@example.com',
    array = str.split(';').map(function (a) { return a.split(','); });

console.log(array);

ES6

var str = 'Bob,1234,Bob@example.com;Mark,5678,Mark@example.com',
    array = str.split(';').map(a => a.split(','));

console.log(array);


0
var arr = [];
var string = 'Bob,1234,Bob@example.com;Mark,5678,Mark@example.com';
var users = string.split(';')
for(var user in users)
      arr.push(users[user].split(','));
JSON.stringify(arr);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接