如何从字符串数组中删除逗号

时间:2016-02-02 10:29:39

标签: javascript lodash

我有一个数组列表:

0: "1 Trenchard Road, , , , Saltford, Bristol, Avon"
1: "10 Trenchard Road, , , , Saltford, Bristol, Avon"
2: "11 Trenchard Road, , , , Saltford, Bristol, Avon"
3: "12 Trenchard Road, , , , Saltford, Bristol, Avon"

我想删除中间的逗号:

 , , , 

我正在使用Lodash,并使用_.compact()查看但是这似乎并没有让我到任何地方。

让我知道你的想法

更新

                var addressArray = getAddressData.data.Addresses;

                scope.items = _.compact(addressArray);

                console.log(scope.items);

4 个答案:

答案 0 :(得分:2)

您可以在RegEx中使用JavaScript Array#map删除额外的逗号。

arr.map(e => e.replace(/(,\s*)+/, ','));

ES5等效:

arr.map(function (e) {
    return e.replace(/(,\s*)+/, ',');
});

RegEx Demo

正则表达式(,\s*)+将搜索由它们之间的任意数量的空格分隔的一个或多个逗号。

var arr = ["1 Trenchard Road, , , , Saltford, Bristol, Avon", "10 Trenchard Road, , , , Saltford, Bristol, Avon", "11 Trenchard Road, , , , Saltford, Bristol, Avon", "12 Trenchard Road, , , , Saltford, Bristol, Avon"];

arr = arr.map(e => e.replace(/(,\s*)+/, ', '));
console.log(arr);

document.getElementById('result').innerHTML = JSON.stringify(arr, 0, 4);
<pre id="result"></pre>

答案 1 :(得分:1)

您可以通过昏迷,filter空白和加入进行拆分。

var str = "1 Trenchard Road, , , , Saltford, Bristol, Avon";
var result = str.split(',').filter(x => x.trim()).join()
console.log(result); // 1 Trenchard Road, Saltford, Bristol, Avon

注意:使用ES6 arrow function=>)如果它在您的环境中不起作用,您可以将它替换为经典function

map函数的完整示例:

let arr = [
    '1 Trenchard Road, , , , Saltford, Bristol, Avon',
    '10 Trenchard Road, , , , Saltford, Bristol, Avon',
    '11 Trenchard Road, , , , Saltford, Bristol, Avon',
    '12 Trenchard Road, , , , Saltford, Bristol, Avon'
];

let result = arr.map(i => i.split(',').filter(x => x.trim()).join());

ES5等效:

var result = arr.map(function(i) {
    return i.split(',').filter(function(x) {
        return x.trim();
    }).join();
});

答案 2 :(得分:0)

使用数组过滤功能

["1 Trenchard Road", , , , "Saltford", "Bristol", "Avon"].filter(function(i){return i})

答案 3 :(得分:0)

请在下面找到JS中的解决方案:

for(var i=0;i<arr.length;i++) { 
    if(arr[i].indexOf(',') > -1) { 
      console.log(arr[i].replace(/,/g,'')); 
    } 
}