如何避免删除数字前面的零?

时间:2018-09-11 05:39:36

标签: javascript

具有以下数字数组

var request = require('request');

//set url
var url = 'http://localhost:8088/example';

//set header
var headers = {
    'Authorization': 'Your authorization'
};

//set form data
var form = {first_name: first_name, last_name: last_name};

//set request parameter
request.post({headers: headers, url: url, form: form, method: 'POST'}, function (e, r, body) {

    var bodyValues = JSON.parse(body);
    console.log(updatedValues.first_name);
    console.log("====================================");
    console.log('error:', e); // Print the error if one occurred
    console.log('statusCode:', r && r.statusCode); // Print the response status code if a response was received
    console.log('body:', body); // Print the HTML for the Google homepage.
    console.log("====================================");
    res.send(bodyValues);
});

我尝试打印它们并保留零,我认为将数字转换为字符串可以解决问题,但事实并非如此,这是我尝试过的一些选择

[0001, 0002, 0003]

如果我尝试任何一种,我都会得到相同的结果

  • 字符串(数字)
  • number.toString()
  • 数字+''

我期望的结果是

[0001, 0002, 0003].forEach(number => console.log(''+number)) // '1', '2', '3'

预先感谢

3 个答案:

答案 0 :(得分:0)

希望您正在寻找这个。将Number的数组转换为带有前导零的String的数组。

var size = 5;
var arr = [1,2,3,4,50];
var newArr = arr.reduce((result,v) => {
newStr = String(v);
while(newStr.length < (size || 2))
  newStr = "0" + newStr;
result.push(newStr);
return result;
},[])

console.log(newArr)

答案 1 :(得分:0)

如果数组中的数字具有固定长度,则可以使用以下内容

function pad(num, size) {
 var s = num+"";
 while (s.length < size) s = "0" + s;
 return s;
}

pad(1,4)返回0001

根据您的情况:

[0001, 0002, 0003].forEach(number => console.log(pad(number,4)) //0001,0002,0003

请记住,只有整数具有固定长度时,此答案才有用。

答案 2 :(得分:0)

我认为像这样的格式化程序已经在某处使用了,但是在ES6中,您可以这样做:

var format = len => num =>
	((new Array(len)).fill("0").join("")+num).slice(len*-1);

console.log(
  [1,2,3,4,5].map(format(4))
);

您的主要问题是数字以八进制而不是十进制形式提供,因此您可以尝试以下操作:

var format = len => num =>
  ((new Array(len)).fill("0").join("")+Number(num).toString(8))
  .slice(len*-1);

console.log(
  [0001,0002,0003,0004,0012].map(format(8))
);