【问题标题】:Create an array from trailing number in each element from another array with Javascript使用Javascript从另一个数组的每个元素中的尾随数字创建一个数组
【发布时间】:2015-08-19 10:08:31
【问题描述】:

我有一个

var array1 = ["something9","something10","something11"] 

我只是想从 array1 中每个元素的尾随数字创建一个 array2。

我设法使用 charAt() 获取最后一个字符,但我只能从 array1 中获取第一个元素,而不是每个元素...

这在 Javascript 中是否可行?

【问题讨论】:

  • 用正则表达式尝试地图
  • array1.map(function(element){ return element.slice(-2); })
  • @Bergi 这不起作用 - 标题具有误导性。 " 只是想用 array1 中每个元素的结束编号创建一个 array2。"
  • @Popnoodles:这就是为什么它是评论,而不是答案:-)

标签: javascript jquery arrays indexof charat


【解决方案1】:

您需要遍历第一个数组来创建第二个。

您可以使用Array.map() 进行简单的迭代

var array1 = ["something9", "something10", "something11", 'asdf'];
var array2 = array1.map(function(value) {
  var match = value.match(/\d+$/);
  return match ? match[0] : ''
});

snippet.log(JSON.stringify(array2));
console.log(array2)
<!-- Provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 -->
<script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script>

【讨论】:

  • 很好的正则表达式,最后只获取数字!
  • 在 Chrome 中出现错误:未捕获的类型错误:无法读取 null 的属性“0”
  • 此解决方案依赖于匹配。在条件中包装内部地图功能将是一个修复。
  • @M.El-Set 查看更新...接受的答案将返回一个数组数组 - jsfiddle.net/arunpjohny/5dcay5ws/1
  • 非常好。就个人而言,我会选择return match ? Number(match[0]) : Number.NaN;,因为人们期望它是一个整数数组,但那是我太过分了,可能会造成比它解决的更多的麻烦。
【解决方案2】:

查看下方

var array1 = ["somet34hing9","something10","something11"];
var array2 = array1.map(function(ele){
    return ele.match(/[0-9]+$/g,"");
});
alert(array2);

DEMO

【讨论】:

  • 这将提取字符串中的所有数字字符,而不仅仅是最后的数字字符,这意味着test5entry123 将返回5123 而不是123
猜你喜欢
  • 1970-01-01
  • 2015-08-15
  • 1970-01-01
  • 2018-07-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-03
相关资源
最近更新 更多