如何使用javascript从每个数组项中删除字符串的特定部分?

时间:2016-09-21 17:47:13

标签: javascript arrays string loops

鉴于以下内容:

var arr = [
    "one,two,three",
    "four,five,six,seven",
    "eight,nine,ten",
    "11,12,13,14"
];

从阵列中的每个元素中删除第二个单词的最佳方法是什么?所需的数组输出为:

arr = [
    "one,three",
    "four,six,seven",
    "eight,ten",
    "11,13,14"
];

我觉得最合乎逻辑的方法是使用for循环遍历数组并从每个元素中删除索引1,如下所示:

for(var i=0; i < arr.length; i++) {
    i.splice(1,1).join(';');
}

(在循环中,我也试过arr[i].splice(1,1).join(';');)---但两种方法都没有返回所需的结果。我做错了什么,以及最有效的方法是什么?

7 个答案:

答案 0 :(得分:4)

您需要先拆分数组,然后删除该元素。

&#13;
&#13;
var arr = [
  "one,two,three",
  "four,five,six,seven",
  "eight,nine,ten",
  "11,12,13,14"
];

for (var i = 0; i < arr.length; i++) {
  // split the string based on ,
  var a = arr[i].split(',');
  // remove second element from string
  a.splice(1, 1);
  // join the updated string array
  arr[i] = a.join();
}

console.log(arr);
&#13;
&#13;
&#13;

使用String#indexOfString#slice方法的其他方法。

&#13;
&#13;
var arr = [
  "one,two,three",
  "four,five,six,seven",
  "eight,nine,ten",
  "11,12,13,14"
];

for (var i = 0; i < arr.length; i++) {
  // get the index of first ,
  var index = arr[i].indexOf(','),
    // get the index of second index
    index1 = arr[i].indexOf(',', index + 1);
  // generate the string based on index
  arr[i] = arr[i].slice(0, index) + arr[i].slice(index1);
}

console.log(arr);
&#13;
&#13;
&#13;

答案 1 :(得分:0)

您可以对字符串使用正则表达式,该字符串查找逗号,任何字符,非gready和另一个逗号,但不包括在内以替换。

var arr = ["one,two,three", "four,five,six,seven", "eight,nine,ten", "11,12,13,14"];

arr = arr.map(function (a) {
    return a.replace(/,.*?(?=,)/, '');
});

console.log(arr);

答案 2 :(得分:0)

首先,你必须在数组中破坏你的字符串,所以:

elements = arr[i].split(',');

然后你拼接第二个元素并加入字符串:

elements.splice(1,1)
result = elements.join(',');

最后你用新的字符串替换字符串:

arrs[i] = result

总结:

for(var i=0; i<arr.length; i++){
    elements = arrs[i].split(',');
    elements.splice(1,1);
    arrs[i] = elements.join(',');
}

玩得开心!

答案 3 :(得分:0)

Array.prototype.splice函数返回已删除的项目。

您需要存储数组,删除项目,最后返回数组。

var arr = [
  "one,two,three",
  "four,five,six,seven",
  "eight,nine,ten",
  "11,12,13,14"
];

function spliceWords(arr, pos, length) {
  length = length || 1; // Default number to remove is 1.
  return arr.map(function(item) {
    var words = item.split(',');
    words.splice(pos, length); // Splice removes the items in-place.
    return words.join(',');
  });
}

var arr2 = spliceWords(arr, 1);

document.body.innerHTML = JSON.stringify(arr2, null, 4);
body { font-family:monospace; white-space:pre; }

答案 4 :(得分:0)

你走了:

arr.map(x => x.replace(x.match(/,[^,]*/),""))

arr.map(function(x) x.replace(x.match(/,[^,]*/),""))

结果:

["one,three", "four,six,seven", "eight,ten", "11,13,14"]

正则表达式查找第一个逗号(,)并抓取后面的所有内容 not 逗号([^,]*)。字符串的这一部分将被替换为任何内容("")。

map方法将此函数应用于数组的每个元素。

答案 5 :(得分:0)

您可以使用.map()更改数组的每个项目,并使用.replace()从字符串中删除第二个值。

&#13;
&#13;
var arr = [
    "one,two,three",
    "four,five,six,seven",
    "eight,nine,ten",
    "11,12,13,14"
];

arr = arr.map(function(val){
    return val.replace(/([\w]+),[\w]+,(.*)/, "$1,$2");
});
console.log(arr);
&#13;
&#13;
&#13;

答案 6 :(得分:0)

  1. 遍历数组中的每个元素
  2. 使用split()方法创建逗号分隔元素数组
  3. 使用splice()方法删除数组中的第二部分
  4. 以下是算法:

    for(var i=0; i < arr.length; i++) {  
    var a = arr[i].split(",");  
    a.splice(1,1);  
    arr[i] = a.join();  
    }