从数组中删除特定数字

时间:2017-01-01 08:32:31

标签: javascript jquery arrays

我正在尝试从每个数组中删除特定数字,但没有成功。我用谷歌搜索了它,但我没有发现类似的东西。首先我用逗号创建了一个数组,然后我想删除021并从array[i](每个值)中删除,只删除前三个字符。

$('.numbers').each(function() {
  if ($(this).text().indexOf(',') != -1) {
    var seprate = $(this).text();
    var array = seprate.split(',');
    $.each(array, function(i, el) {

      if (array[i].indexOf("021") != -1) {
      array[i].substr(0,2).replace("021", "")
      }

      $('.phonearray').append(array[i]);
    });
  }
});
.phonearray {
background: lightgreen;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="numbers">
  02188776021 , 09123074859 , 021-45676543 , 021 -55446021
</div>

<div class="phonearray">

</div>

我使用substr删除前三个字符,但它不起作用。

2 个答案:

答案 0 :(得分:2)

replace()不会修改原始字符串(JavaScript字符串是不可变的)。您需要将结果分配回数组。

您可以使用正则表达式替换来执行您想要的操作。正则表达式^021\s*-?在开头匹配021,可能后跟空格和-字符。

我还使用.trim()删除了逗号周围的空格。

&#13;
&#13;
$('.numbers').each(function() {
  if ($(this).text().indexOf(',') != -1) {
    var seprate = $(this).text();
    var array = seprate.split(',');
    $.each(array, function(i, el) {
      var val = el.trim().replace(/^021\s*-?/, '');
      $('.phonearray').append(val);
    });
  }
});
&#13;
.phonearray {
  background: lightgreen;
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="numbers">
  02188776021 , 09123074859 , 021-45676543 , 021 -55446021
</div>

<div class="phonearray">

</div>
&#13;
&#13;
&#13;

答案 1 :(得分:1)

让我们先定义问题: 您有一个字符串,其中包含以逗号分隔的电话号码,如果在每个号码中找到,则必须删除前缀

首先想到:

function removePrefixes(input /* string */) {
  return input.split(',')
   .map(x => x.trim())
   .map(x => x.replace(/\b021\s*/, ''))
   .join(', ')
}

替换原始文字:

$('.numbers').text((i, text) => removePrefixes(text));

示例:

removePrefixes("02188776021 , 09123074859 , 021-45676543 , 021 -55446021") 
// returns "88776021, 09123074859, -45676543, -55446021"

说明:

  1. 用逗号分割,转换为数组
  2. 删除周围空格(修剪)
  3. 替换以021开头的数字,\b表示字边界,\s*后面的任何空格
  4. 加入集合,返回字符串
  5. 从这里做任何你想做的事。