如何将数字数组拼接成一个数?

22

我该如何通过尽可能少的步骤将这个数组连接起来以得到期望的输出结果?

var x = [31,31,3,1]
//expected output: x = 313131;

6
可能是 x = +x.join(''),不过这不是很有趣的代码挑战。 翻译:上述代码将数组中所有元素组合成字符串并转换为数字,但这并不是一个很有趣的代码挑战。 - Ry-
7个回答

24

使用数组的 join 方法。Join 方法将数组的元素连接成一个字符串,并返回该字符串。默认分隔符是逗号(,)。在这里,分隔符应该是一个空字符串。

var  x = [31,31,3,1].join("");

编辑:为了获得数值结果

const  x = +[31,31,3,1].join("");
或者
const  x = Number([31,31,3,1].join(""));

1
这将返回一个字符串。@MatthewHarwood 要求返回一个整数。为了实现这一点,您应该将结果封装起来: x = parseInt(x); - Pablo
谢谢Pablo,这就是我想要的。 - George Tiganila

7

Javascript的join()方法会返回一个字符串类型的结果。如果你想要得到一个数字类型的结果,可以这样做:

var x = [31,31,3,1];
var xAsString = x.join(''); // Results in a string
var xAsNumber = Number(x.join('')); // Results in a number, you can also use +(x.join(''))

4

除了这个,我想不到其他的了。

+Function.call.apply(String.prototype.concat, x)

或者,如果你坚持的话。
+''.concat.apply('', x)

在ES6中:

+''.concat(...x)

使用 reduce

+x.reduce((a, b) => a + b, '');

或者如果您更喜欢的话

x.reduce(Function.call.bind(String.prototype.concat), '')

另一个想法是把数组作为字符串进行操作,这通常是一个不错的方法。
+String.prototype.replace.call(x, /,/g, '')

也许还有其他方法。也许在谷歌搜索“javascript数组合并”时会出现一些不太常见的函数,可以用来合并数组元素。

2
你的问题要求一个数字,大多数上面的答案会给你一个字符串。你需要像这样的东西。 const number = Number([31,31,3,1].join("")); 最初的回答已经很清楚了。

0

尝试使用以下join()方法

var x = [31,31,3,1]
var y = x.join('');
alert(y);


-2

请尝试以下。

var x = [31,31,3,1]
var teststring = x.join("");

-2

这将会起作用

var x = [31,31,3,1];
var result = x.join("");

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接