54

我有一个字符串:

var str = "123, 124, 234,252";

我想在拆分后解析每个项目并增加 1。所以我将拥有:

var arr = [124, 125, 235, 253 ];

我怎样才能在 NodeJS 中做到这一点?

4

3 回答 3

119

用途splitmap作用:

var str = "123, 124, 234,252";
var arr = str.split(",");
arr = arr.map(function (val) { return +val + 1; });

注意+val- 字符串被转换为一个数字。

或更短:

var str = "123, 124, 234,252";
var arr = str.split(",").map(function (val) { return +val + 1; });

编辑 2015.07.29

今天我建议不要使用+运算符将​​变量转换为数字。相反,我会使用更明确但也更易读的Number调用:

var str = "123, 124, 234,252";
var arr = str.split(",").map(function (val) {
  return Number(val) + 1;
});
console.log(arr);

编辑 2017.03.09

ECMAScript 2015 引入了箭头函数,因此可以使用它来使代码更简洁:

var str = "123, 124, 234,252";
var arr = str.split(",").map(val => Number(val) + 1);
console.log(arr);

于 2013-02-28T11:34:48.117 回答
4
var str = "123, 124, 234,252";
var arr = str.split(",");
for(var i=0;i<arr.length;i++) {
    arr[i] = ++arr[i];
}
于 2013-02-28T11:23:10.373 回答
1

如果您正在使用 lodash 并且想要一个太可爱的自己的好单线:

_.map(_.words('123, 124, 234,252'), _.add.bind(1, 1));

由于 lodash 强大的解析能力,它出奇的健壮。

如果您想要一个也可以清除字符串中的非数字字符(并且更容易理解......而且不是那么可爱):

_.chain('123, 124, 234,252, n301')
   .replace(/[^\d,]/g, '')
   .words()
   .map(_.partial(_.add, 1))
   .value();

2017年编辑

我不再推荐我以前的解决方案。除了矫枉过正并且在没有第三方库的情况下已经很容易做到之外,它还使用了_.chain,它有各种各样的问题。这是我现在推荐的解决方案:

const str = '123, 124, 234,252';
const arr = str.split(',').map(n => parseInt(n, 10) + 1);

我的旧答案仍然正确,所以我将它留作记录,但现在没有必要使用它。

于 2015-10-07T05:42:04.007 回答