我想将一个整数转换12345
为一个数组,比如[1,2,3,4,5]
.
我已经尝试了下面的代码,但有没有更好的方法来做到这一点?
var n = 12345;
var arr = n.toString().split('');
for (i = 0; i < arr.length; i++) arr[i] = +arr[i] | 0;
我想将一个整数转换12345
为一个数组,比如[1,2,3,4,5]
.
我已经尝试了下面的代码,但有没有更好的方法来做到这一点?
var n = 12345;
var arr = n.toString().split('');
for (i = 0; i < arr.length; i++) arr[i] = +arr[i] | 0;
这条单行就可以解决问题:
Array.from(String(12345), Number);
const numToSeparate = 12345;
const arrayOfDigits = Array.from(String(numToSeparate), Number);
console.log(arrayOfDigits); //[1,2,3,4,5]
1-String(numToSeparate)
将数字 12345 转换为字符串,返回 '12345'
2- 该Array.from()
方法从类数组或可迭代对象创建一个新的 Array 实例,字符串 '12345' 是一个可迭代对象,因此它将从中创建一个 Array。
3- 但是,在自动创建这个新数组的过程中,该Array.from()
方法将首先将任何可迭代元素(在这种情况下为每个字符,例如:'1'、'2')传递给我们设置给他的函数作为第二个参数,这是Number
这种情况下的功能
4-该Number
函数将采用任何字符串字符并将其转换为数字,例如:Number('1')
; 将返回1
。
5-这些数字将被一个一个添加到一个新数组中,最后这个数字数组将被返回。
概括
代码行Array.from(String(numToSeparate), Number);
会将数字转换为字符串,获取该字符串的每个字符,将其转换为数字并放入一个新数组中。最后,这个新的数字数组将被返回。
我会去
var arr = n.toString(10).replace(/\D/g, '0').split('').map(Number);
replace
如果您确定n
没有小数,则可以省略。
我会这样做,以避免在不需要时使用字符串:
var n = 12345;
var arr = [];
while(n>0){arr.unshift(n%10);n=n/10|0;}
var n = 12345;
var arr = ('' + n).split('').map(function(digit) {return +digit;});
不过,地图功能仅受最近的浏览器支持。
另一种方法是使用文字然后传播:
const n = 12345;
const arr = [...`${n}`].map(Number);
console.log(arr);
你们太棒了,有很多方法可以做到这一点。让我考虑一下这一点。如果这种方法有问题,请提供反馈。
let fromNumberToArray = [...num.toString()].map(Number);
您可以使用内置的 JS 方法 toString() 和 parseInt() 作为:
function toDigitsArr(num) {
num = num.toString();
let numArr = [];
for (let i = 0; i < num.length; i++) {
numArr[i] = parseInt(num[i]);
}
return numArr;
}
console.log(toDigitsArr(9119));
提出的解决方案在大多数情况下都可以正常工作,但不能用于负数。
这种情况有解决方案。
const intToArray = (int) => {
return String(int).match(/-?\d/g).map(Number)
}
console.log(intToArray(312)) // [3, 1, 2]
console.log(intToArray(-312)) // [-3, 1, 2]
此方法比使用 toString 转换的方法快。大约3-4次。您可以在此处或下面的屏幕上查看基准。
const numberToArray = (number) => {
var arr = [];
while(number>0) { arr.push(number%10); number = number/10|0; }
return arr.reverse();
}
你可以做这样的事情
let n = 12345;
let arr = (""+n).split('');//HERE IS THE ARRAY
///Now for, for loop, you can do something like this
arr.map(element=>{
//Do Something
})
使用地图(数字)。下面的代码片段可能会有所帮助。
var num = 1230945;
var result=num.toString().split('').map(Number);
console.log(result);
可运行片段:
const n = 12345;
let toIntArray = (n) => ([...n + ""].map(Number));
console.log(toIntArray(n));
日期:24/07/2021
输入 = 12345
输出 = [1,2,3,4,5]
const input = 12345;
console.log(`${input}`.split('').map(Number));
我先将数字转换为字符串,然后使用 Array.from() 将字符串转换为数组。
let dataArray = Array.from(value.toString());
首先,将整数转换为字符串 & 然后转换为数组。使用 map 函数,单个字符串在 parseInt 函数的帮助下转换为数字。最后,该数组作为结果返回。
const digitize = n => [...`${n}`].map(i => parseInt(i));
您可以只使用 String() 方法。它转换为字符串,但您可以以数字形式使用它们。
let numbers = String(val);
console.log(numbers);
这会成功的。
let n = 1234;
console.log(n.toString().split(''));
这是我通常使用的两种方法。第一种方法:
function toArr1(n) {
"use strict";
var sum = 0;
n = Array.from(String(n), Number);
/*even if the type of (n) was a number it will be treated as a string and will
convert to an Array*/
for (i = 0; i < n.length; i += 1) {
sum += n[i];
}
return sum;
}
第二种方法:
function toArr2(n) {
var sum = 0;
n = n.toString().split('').map(Number);
for (i = 0; i < n.length; i += 1) {
sum += n[i];
}
return sum;
}