热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

JS高级050202Array类型转换方法

如前所述,所有对象都具有toLocaleString()、toString()和valueOf()方法。其中,调用数组的toString()方法会返回由

如前所述,所有对象都具有toLocaleString()、toString ()和 valueOf() 方法。其中,调用数组的toString()方法会返回由数组中每个值的字符串形式拼接而成的一个以逗号分隔的字符串。而调用valueOf() 返回的还是数组。实际上,为了创建这个字符串会调用数组每一项的toString ()方法。来看下面这个例子。

var colors = ["red", "blue", "green"]; //creates an array with three strings
console.log(colors.toString()); //red,blue,green
console.log(colors.valueOf()); //red,blue,green
console.log(colors); //red,blue,green

在这里,我们首先显式地调用了 toString() 和 valueOf() 方法,以便返回数组的字符串表示, 每个值的字符串表示拼接成了一个字符串,中间以逗号分隔。最后一行代码直接将数组传递给了 alert() 由于alert ()要接收字符串参数,所以它会在后台调用toString() 方法,由此会得到与直接调用toString() 方法相同的结果。

另外,toLocaleString() 方法经常也会返回与toString() 和valueOf() 方法相同的值,但也不总是如此。当调用数组的toLocaleString() 方法时,它也会创建一个数组值的以逗号分隔的字符串。而与前两个方法唯一的不同之处在于,这一次为了取得毎一项的值,调用的是每一项的toLocaleString() 方法,而不是toString() 方法。请看下面这个例子。

var person1 = {toLocaleString: function() {return "Nikolaos";},toString: function() {return "Nicholas";}
};
var person2 = {toLocaleString: function() {return "Grigorios";},toString: function() {return "Greg";}
};var people = [person1, person2];
console.log(people); //Nicholas,Greg
console.log(people.toString()); //Nicholas,Greg
console.log(people.toLocaleString()); //Nikolaos,Grigorios

我们在这里定义了两个对象:person1和person2。而且还分别为每个对象定义了一个toString() 方法和一个toLocaleString() 方法,这两个方法返冋不同的值。然后,创建一个包含前面定义的两个对象的数组,在将数组传递给alert() 时,输出结果是"Nicholas , Greg",因为调用了数组每一项 的toString ()方法(同样,这与下一行显式调用toString()方法得到的结果相同)。而当调用数组 的toLocaleString() 方法时,输出结果是"Nikolaos, Grigories",原因是调用了数组每一项的 toLocaleString() 方法。

数组继承的toLocaleString()、toString()和valueOf()方法,在默认情况下都会以逗号分隔的字符串的形式返回数组项,而如果使用join()方法,则可以使用不同的分隔符來构建这个字符串。join()方法只接收一个参数,即用作分隔符的字符串,然后返回包含所有数组项的字符串。请看下面的例子:

var colors = new Array(); //create an array
var count = colors.push("red", "green"); //push two items
console.log(count); //2count = colors.push("black"); //push another item on
console.log(count); //3var item = colors.pop(); //get the last item
console.log(item); //"black"
console.log(colors.length); //2

在这里,我们使用join()方法重现了 tostring()方法的输出。在传递逗号的情况下,得到了以逗号分隔的数组值。而在最后一行代码中,我们传递了双竖线符号,结果就得到了字符串“redl I green I I blue”。如果不给join()方法传入任何值,或者给它传入undefined,则使用逗号作为分隔符。IE7及更早版本会错误的使用字符串"undefined"作为分隔符。

如果数组中的某一项的值是 null 或者 undefined,那么该值在join()、 toLocaleString()、toString() 和 valueOf() 方法返回的结果中以空字符串表示。


推荐阅读
  • 一、BlockExpression类:表式一个包含可在其中定义变量的表达式序列的块。是一组表达式,类似于多个委托的+后的效果,其返回表达式是最后一个表达式决定。以下是Block ... [详细]
  • 本文目录一览:1、ECharts柱状图怎么随机颜色 ... [详细]
  • 援用范例援用范例的值(对象)是援用范例的一个实例。建立新对象:new操纵符后跟一个组织函数varpersonnewObject();上面:援用范例:Object组织函数:Objec ... [详细]
  • 從源碼看Promise觀點與完成Promise是JS異步編程中的主要觀點,它較好地處置懲罰了異步使命中回調嵌套的題目。在沒有引入新的言語機制的前提下,這是怎樣完成的呢?上手Prom ... [详细]
  • 原理:    在父组件中使用axios获取异步数据传给子组件,但是发现子组件在渲染的时候并没有数据,在created里面打印也是空的,结果发现一开始子组件绑定的数据是空的,在请求数据没有返回数据时,子组件就已经加载了,并且他绑定的值也是空的使用vuex全局状态管理,其实简单,利用vuex的辅助函数(mapState,mapMutations)mapState是将st ... [详细]
  • 什么是sequelize?sequelize是一个orm框架,什么是orm呢?即Object-RelationlMappingÿ ... [详细]
  • 获取鼠标的位置/坐标
    使用javascript如何获取鼠标的位置呢?获取光标的位置?获取鼠标坐标先看效果?核心方法:****返回鼠标的坐标*@parame*@returns{{x ... [详细]
  • 本文目录一览:1、c语言中,函数类型有几种?2 ... [详细]
  • 状压dfs。。。。GemsFight!TimeLimit:2000010000MS(JavaOthers)    MemoryLimit:327680327680K ... [详细]
  • 本文目录一览:1、Geth控制台使用及Web3.js使用 ... [详细]
  • 我有一个数组存储任务信息.每个任务还​​有一个依赖于它的taskId数组.输入letinputArr[{id:1,dependOnTasks:[2,3]},{id:2,depend ... [详细]
  • 模样如下:Array.prototype.delrepfunction(fun){if(!fun){funfunction(d){returnd;};}varnewArr[];th ... [详细]
  • Flex中使用filter过滤数据 ... [详细]
  • 对象与对象之间的成员变量是相互独立的.要想共用数据,则需要使用静态成员或静态方法#只要在类中声明静态成员变量,即使不定义对象,也可以为静态成员变量分配空间,进而可以使用静态成员变 ... [详细]
  • vue+three.js实现炫酷的3D登陆页面示例详解【vue入门】
    这篇文章主要为大家介绍了vue+three.js实现炫酷的3D登陆页面示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多 ... [详细]
author-avatar
手机用户2602934117
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有