js-toLocaleString的小技巧

toLocaleString

Object.prototype.toLocaleString()

方法返回一个该对象的字符串表示。

obj.toLocaleString() : Object toLocaleString 返回调用 toString() 的结果。

a.toLocaleString() // "[object Object]"


a.toString() //"[object Object]"

该函数提供给对象一个通用的toLocaleString 方法,即使不是全部都可以使用它。 见下面的列表。

覆盖 toLocaleString 的对象

 

Array.prototype.toLocaleString()

返回一个字符串表示数组中的元素。数组中的元素将使用各自的 toLocaleString 方法转成字符串,这些字符串将使用一个特定语言环境的字符串(例如一个逗号 ",")隔开。

arr.toLocaleString(locales ,options)

总是在prices数组中显示字符串和数字的货币符号

var prices = ['¥7', 500, 8123, 12];
prices.toLocaleString('ja-JP', { style: 'currency', currency: 'JPY' });

// "¥7,¥500,¥8,123,¥12"

 

Number.prototype.toLocaleString()

toLocaleString() 方法返回这个数字在特定语言环境下的表示字符串。

在没有指定区域的基本使用时,返回使用默认的语言环境和默认选项格式化的字符串

var number = 3500;

console.log(number.toLocaleString()); // "3,500"

语法参数 

numObj.toLocaleString(locales , options)

locales 和 options 参数让应用程序可以指定要进行格式转换的语言,并且定制函数的行为。 

 locales : 可选。缩写语言代码。 例如 zh-u-nu-hanidec (表示中文十进制数字) 

var number = 123456.789;

// 德国使用逗号作为小数分隔符,分位周期为千位
console.log(number.toLocaleString('de-DE'));
// → 123.456,789

options : 可选。

通过 toLocaleString 返回的结果可以通过 options 参数进行定制

var number = 123456.789;

// 要求货币格式  "USD" 表示美元, "EUR" 表示欧元, 或者 "CNY"是人民币  
// 没有默认值,如果 style 是 “currency”,必须提 currency 属性.
console.log(number.toLocaleString('de-DE', { style: 'currency', currency: 'EUR' }));
// → 123.456,79 €

// 日元不使用小数位
console.log(number.toLocaleString('ja-JP', { style: 'currency', currency: 'JPY' }))
// → ¥123,457

// 限制三位有效数字
console.log(number.toLocaleString('en-IN', { maximumSignificantDigits: 3 }));
// → 1,23,000

使用的小数位数的最大数目,可能的值是从 0 到 20。但是如果不传如参数的话,纯数字格式默认是 3位小数。具体位数与 minimumfractiondigits ( 使用的小数位数的最小数目 ) 属性有关

var num = 123456.1234567

num.toLocaleString()

"123,456.123"

 

Date.prototype.toLocaleString()

dateObj.toLocaleString(locales ,options)

返回该日期对象的字符串,该字符串格式因不同语言而不同。根据当地语言规定返回代表着时间的字符串。

没有指定语言环境(locale)时,返回一个使用默认语言环境和格式设置(options)的格式化字符串。

var date = new Date(Date.UTC(2012, 11, 12, 3, 0, 0));

// toLocaleString 不包含参数的返回值取决于实现,
// 默认的区域(locale),和默认的时区(time zone)
date.toLocaleString();
// → 如果是在en-US区域和America/Los_Angeles时区运行返回值为"12/11/2012, 7:00:00 PM"

date.toLocaleString();
"2012/12/12 上午11:00:00"  // 本地默认的区域与时区

locales : 为了在应用的用户界面得到某种语言的日期和时间格式,必须确保使用 locales 参数指定了该语言

var date = new Date(Date.UTC(2012, 11, 20, 3, 0, 0));

//假定本地时区是 America/Los_Angeles(美国时区)
//en-US(美利坚英语)使用 month-day-year 的顺序展示年月日
alert(date.toLocaleString("en-US"));
// → "12/19/2012, 7:00:00 PM"

options :可以使用 options 参数来自定义 toLocaleString 方法返回的字符串。

var date = new Date(Date.UTC(2012, 11, 20, 3, 0, 0));

// 使用24小时制
alert(date.toLocaleString("en-US", {hour12: false}));
// → "12/19/2012, 19:00:00"

 [‘1’,‘2’,‘3’].map(parseInt)返回结果是什么?

首先针对于 map 方法,MDN 是这么解释的

map()方法创建一个新数组,其结果是该数组中的每个元素都调用一个提供的函数后返回的结果 

map方法内部必须是一个函数,否则报错,该函数可以接收三个参数:value,index,array,一般情况下 array 会默认省略

["1","2","3"].map((value,index,array) => {
    return {"value":value , "index":index , "array":array}
})

[
    {value:"1",index,0,array:["1","2","3"]},
    {value:"2",index,1,array:["1","2","3"]},
    {value:"3",index,2,array:["1","2","3"]}
]

parseInt函数

parseInt(stringradix)   将一个字符串 string 转换为 radix 进制的整数, radix 为介于2-36之间的数。

如果string参数不是一个字符串,则将其转换为字符串(使用  ToString 抽象操作)。字符串开头的空白符将会被忽略。

返回解析后的整数值。

如果被解析参数的第一个字符无法被转化成数值类型,则返回 NaN。

parseInt("Hello", 8); // 根本就不是数值

第一个非空格字符不能转换为数字,也返回NaN

parseInt("546", 2);   // 除了“0、1”外,其它数字都不是有效二进制数字

 [‘1’,‘2’,‘3’].map(parseInt)返回结果实际上就是

parseInt 这个函数在被调用的时候,默认的将 map 传递的 value 和 index 两个参数接收,使用 index 代表的规则,将 value 进行转化

parseInt("1", 0);   // 1   默认转化为 10 进制数

parseInt("2", 1);   // NaN   1不在 参数转化规则之内,

parseInt("3", 2);   // NaN   第二个参数虽然在转化规则之内,但是3,不属于二进制基本数位,不能被转化

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值