今天咱们继续来介绍 Javascirpt 数组中的方法,也是数组系列的第四篇文章,由于数组的方法众多,每篇文章咱们都对数组的每一个方法都有比较细致的描述,只要你可以从中成长一点点,那咱们的目的就达到了,学习是一个持续的,渐进的过程。天天进步一点点,最终会有大成就。数组
直接进入主题微信
咱们在项目的开发过程当中,数据类型之间的转换有着很是重要的做用,而数组转换成其余数据类型是咱们常见的一种。数据结构
该方法是对数组转换成字符串,数组的每个元素都会调用 「toString」方法 ,返回一个新字符串。该字符串是以数组中的每个元素的字符串形式拼接而成,且元素之间用逗号分隔。函数
定义没看懂,咱们看一个例子确定马上就明白!学习
//语法 array.toString() //案例1 const numbers = [1, 2, 3, 4, 5]; const result = numbers.toString(); console.log(result); //1,2,3,4,5 console.log(typeof result); //string //案例2 const numbers = ["A", "B", "C"]; const result = numbers.toString(); console.log(result); //A,B,C console.log(typeof result); //string //利用 reduce 方法模拟 toString 的执行过程 const numbers = [1, 2, 3, 4, 5]; const result = numbers.reduce((prev, current) => { return prev.toString() + "," + current.toString(); }); console.log(result); //1,2,3,4,5
看到这里应该会有人疑问,是否是只能用逗号分隔呢?若是我用其它字符分隔可行吗?能够告诉你「toString」方法确定是不行了,可是咱们能够利用其余方法进行。编码
老规矩,咱们仍是会在每一个方法的后面看看兼容。spa
该方法也是将一个数组转换成字符串,返回一个新的字符串。code
方法会将数组的每个元素转换成字符串,而后再用给定的字符去拼接成一个新的字符串返回给咱们。对象
该方法接受一个参数:就是咱们给定的分隔符。排序
//语法 array.join(separator)
虽然说语法看上去比较简单,可是有几点咱们须要注意的
const numbers = [1, 2, 3, 4, 5]; const result1 = numbers.join(); console.log(result1);//1,2,3,4,5 const result2 = numbers.join(""); console.log(result2);//12345 const result3 = numbers.join(" "); console.log(result3);//1 2 3 4 5 const result4 = numbers.join("-"); console.log(result4);//1-2-3-4-5 const result5 = numbers.join("A"); console.log(result5);//1A2A3A4A5
这里咱们说到了数组转换为字符串,那么字符串如何转换成数组呢?感兴趣的小伙伴能够本身去了解下。
「sort」方法的兼容性如何呢?直接上图。
数组的排序用到的场景有不少,好比表格的升序与降序,数据从大到小排列或者按照某些规则去排列等等都会用到排序,如何有效到使用数据到排序方法,首先你要对这些方法有必定的了解才能使用比较恰当的方法。
从名称咱们应该就能猜出该方法的做用,该方法就是将数组中的元素颠倒顺序。
//语法 array.reverse() //案例 const numbers = [1, 2, 3, 4, 5]; numbers.reverse(); console.log(numbers); //[5, 4, 3, 2, 1]
方法相对比较简单,也没什么好解释的,可是应用场景比较少,在实际的项目中咱们并非那么简单的数据结构,那么简单的排序规则,下面咱们来重点介绍一个很是牛逼并且很是灵活的一个排序方法。
「reverse」方法的兼容性。
该方法对数组的元素进行排序,默认状况下按照升序排列。先看看两个例子吧
//案例1 const numbers = [1, 3, 5, 2, 4]; numbers.sort(); console.log(numbers); //[1, 2, 3, 4, 5] //案例2 const numbers2 = [1, 15, 20, 2, 3]; numbers2.sort(); console.log(numbers2);//[1, 15, 2, 20, 3]
你会发现排序规则并非咱们想一想的那样,到底是怎么一回事情呢?
其实在「sort」方法执行的时候,数组的每一个元素会先执行一次 toString() 方法,而后在根据字符串的 Unicode 编码进行排序。
那么咱们怎么样作才能按照咱们本身的意愿或者说规则进行排序呢?
其实「sort」方法还接受一个可选的参数:该参数是一个函数,它能够用来指定咱们数组排序的规则。
//语法 array.sort([callback])
那么咱们应该如何利用这个参数去指定咱们排序的规则呢?参数函数接受两个参数,而后会根据返回的两个参数的比较值进行排序。
array.sort(compare(a, b){ return a- b });
排序的规则以下:
例如咱们想把上面的案例2中的数组按照数字的大小进行排列,咱们只须要加入上面咱们说的比较函数
const numbers2 = [1, 15, 20, 2, 3]; numbers2.sort(function(a ,b){ return a- b; }); console.log(numbers2);//[1, 2, 3, 15, 20]
是否是 so easy!若是咱们想要进行降序排列也很简单,调换一个咱们的计算方法就行。
const numbers2 = [1, 15, 20, 2, 3]; numbers2.sort(function(a ,b){ return b - a; }); console.log(numbers2);//[20, 15, 3, 2, 1]
可是在实际的使用当中咱们不只仅比较的是数字与字符类型,也能够能是比较的是对象,不过不要紧咱们依旧可使用对象的属性去进行排序。
const friends = [{ name: "大B哥", age: 25 }, { name: "二B哥", age: 30 }, { name: "三B哥", age: 28 }, { name: "我", age: 14 }]; friends.sort(function(a, b){ return b.age - a.age; }); console.log(friends); //排序以后 //[{name: "二B哥", age: 30}, //{name: "三B哥", age: 28}, //{name: "大B哥", age: 25}, //{name: "我", age: 14}]
能够看到我交的朋友通常都比较偏大,一眼就能看出哪一个是最大的,哪一个是最小的,不过我相信你们也看出来了,最小的哪一个就是我(... 哈哈)。
至于 sort 更多更有趣的方法,小伙伴们不妨本身去寻找尝试吧。
继续来看看「sort」方法的兼容性。
总结
咱们继续了咱们数组系列的文章的,今天咱们主要说的就是数组的如何转换成其余数据类型,以及数组如何按照咱们本身的规则去进行排序。但愿对你有所帮助,咱们后面还会持续更新其余用法,若是你喜欢本篇文章就给个赞加关注吧!
关注微信公众号:六小登登。领取全套学习资源