将数字转换为反转的数字数组

Pio*_*cki 1 javascript arrays reverse object

我已经开发了这个codepen(http://codepen.io/PiotrBerebecki/pen/qZjojV?editors=0010)试图解决以下JavaScript的问题:

给定非负整数,返回一个包含相反顺序的独立数字列表的数组.示例:348597 =>正确的解决方案应该是[7,9,5,8,4,3]

下面的函数显然不正确,因为它返回["7","9","5","8","4","3"] - 正确的顺序,但带引号.我怎么能修改它以便它返回[7,9,5,8,4,3]?

function digitize(n) {
  var initialArray = (""+n).split('');
  var reversedArray = [];
  for (var i = initialArray.length - 1; i >= 0; i--) {
    reversedArray[i] = initialArray.shift();
  }
  return reversedArray;
}
Run Code Online (Sandbox Code Playgroud)

Rom*_*est 7

"单线"解决方案:

var num = 348597,
    arr = String(num).split("").reverse().map(Number);

console.log(arr);  // [7, 9, 5, 8, 4, 3]
Run Code Online (Sandbox Code Playgroud)
  • String(num):String全局对象充当字符串的构造函数,并将给定数字"转换"为字符串(在本例中)

  • 所述Array.reverse():方法反转到位阵列

  • 所述Array.map():方法创建并返回一个新的数组调用每个数组元素上的设置功能


use*_*720 5

添加 parseInt 以从字符串转换为数字,因为当您拆分时,您会将每个整数转换为字符串

function digitize(n) {
  var initialArray = (""+n).split('');
  var reversedArray = [];
  for (var i = initialArray.length - 1; i >= 0; i--) {
    reversedArray[i] = parseInt(initialArray.shift(),10);
  }
  return reversedArray;
}

console.log(digitize(348597));
Run Code Online (Sandbox Code Playgroud)


Aks*_*jan 5

更好的是,将其减少为两行:

function digitize(num) {
    return num.toString().split('').reverse().map(Number);
}
Run Code Online (Sandbox Code Playgroud)

最后的map调用将函数应用于数组中的每个元素(在本例中,函数将字符串转换为对象) - 其他所有内容都只是将数字转换为字符串,将字符串拆分为数组并将其反转。

传统上,parseInt将在调用中使用map,但这会引起奇怪的行为