我有一个字符串:
var str = "123, 124, 234,252";
我想在拆分后解析每个项目并增加 1。所以我将拥有:
var arr = [124, 125, 235, 253 ];
我怎样才能在 NodeJS 中做到这一点?
我有一个字符串:
var str = "123, 124, 234,252";
我想在拆分后解析每个项目并增加 1。所以我将拥有:
var arr = [124, 125, 235, 253 ];
我怎样才能在 NodeJS 中做到这一点?
用途split
及map
作用:
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; });
今天我建议不要使用+
运算符将变量转换为数字。相反,我会使用更明确但也更易读的Number
调用:
var str = "123, 124, 234,252";
var arr = str.split(",").map(function (val) {
return Number(val) + 1;
});
console.log(arr);
ECMAScript 2015 引入了箭头函数,因此可以使用它来使代码更简洁:
var str = "123, 124, 234,252";
var arr = str.split(",").map(val => Number(val) + 1);
console.log(arr);
var str = "123, 124, 234,252";
var arr = str.split(",");
for(var i=0;i<arr.length;i++) {
arr[i] = ++arr[i];
}
如果您正在使用 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);
我的旧答案仍然正确,所以我将它留作记录,但现在没有必要使用它。