JavaScript的数组API函数
㈠数组转字符串
⑴String(arr):将arr中的每个元素转为字符串,用逗号分隔
固定套路:对数组拍照:用于鉴别是否数组被修改过
⑵arr.join("连接符"):将arr中每个元素转为字符串,用自定义的连接符分隔
// 将字符拼接为单词
var chars = ["H","e","l","l","o"];
console.log(chars.join("")); //Hello
⑶固定套路
①将字符组成单词:chars.join("")-> 无缝拼接
扩展:判断数组是空数组:arr.join("")==""
②将单词组成句子:words.join("")
③将数组转化为页面元素的内容:
"<开始标签>"+
arr.join("</结束标签><开始标签>")
+"</结束标签>"
㈡拼接和选取
不直接修改原数组,而返回新数组!
⑴拼接
concat()拼接两个或更多的数组,并返回结果
var newArr = arr1.concat(值1,值2,arr2,值3,...)
将值1,值2和arr2中每个元素,以及值3都拼接到arr1的元素之后,返回新数组
其中:arr的元素会被先打散,再拼接
var arr1 = [90,91,92];
var arr2 = [80,81];
var arr3 = [70,71,72,73];
var arr4 = arr1.concat(50,60,arr2,arr3); console.log(arr1); //90,91,92 现有数组值不变
console.log(arr4); //90,91,92,50,60,80,81,70,71,72,73
⑵选取
slice()返回现有数组的一个子数组
var subArr = arr.slice(starti,endi+1)
选取arr中starti位置开始,到endi结束的所有元素组成新数组返回——原数组保持不变
强调:凡是两个参数都是下标的函数,都有一个特性:
含头不含尾
var arr1 = [10,20,30,40,50];
var arr2 = arr1.slice(1,4); //20,30,40
var arr3 = arr1.slice(2); //30,40,50
var arr4 = arr1.slice(-4,-2); //20,30 console.log(arr1) //10,20,30,40,50 原数组元素不变
⑶选取简写
①一直选取到结尾:可省略第二个参数
②如果选取的元素离结尾近:可用倒数下标:
arr.slice(arr.length-n,arr.length-m+1);
可简写为:arr.slice(-n,-m+1);
③复制数组:
arr.slice(0,arr.length);
可简写为:arr.slice();
㈢修改数组
⑴删除
splice 直接修改原数组
arr.splice(starti,n);
删除arr中starti位置开始的n个元素不考虑含头不含尾
其实:var deletes = arr.splice(starti,n);
返回值deletes保存了被删除的元素组成的临时数组
var arr1 = [10,20,30,40,50];
var arr2 = arr.splice(2,1);
//var arr2 = arr1.splice(2,2,21,22,23);
//var arr2 = arr1.splice(2,2,[91,92,93]); console.log(arr1);
conlole.log(arr2);
⑵插入
arr.splice(starti,0,值1,值2,...)
在arr中starti位置,插入新值1,值2,...原starti位置的值及其之后的值被向后顺移
⑶替换
其实就是删除旧的,插入新的
arr.splice(starti,n,值1,值2,...)
先删除arr中starti位置的n个值,再在starti位置插入新值
强调:删除的元素个数和插入的新元素个数不必一致。
㈣颠倒数组
reverse() 颠倒数组中元素的顺序
arr.reverse()
var arr1 = [10,20,30,40,50];
arr1.reverse(); console.log(arr1);
强调:仅负责原样颠倒数组,不负责排序
㈤排序
将元素按从小到大的顺序重新排列
⑴排序API
arr.sort():默认将所有元素转为字符串再排列
问题:只能排列字符串类型的元素
解决:使用自定义比较器函数
⑵排序算法
(手写)冒泡 快速 插入排序
JavaScript的数组API函数的更多相关文章
- JavaScript中对数组和数组API的认识
JavaScript中对数组和数组API的认识 一.数组概念: 数组是JavaScript中的一类特殊的对象,用一对中括号“[]”表示,用来在单个的变量中存储多个值.在数组中,每个值都有一个对应的不重 ...
- JavaScript之数组高阶API—reduce()
一文搞懂JavaScript数组中最难的数组API--reduce() 前面我们讲了数组的一些基本方法,今天给大家讲一下数组的reduce(),它是数组里面非常重要也是比较难的函数,那么这篇文章就好好 ...
- JavaScript中常见的数组操作函数及用法
JavaScript中常见的数组操作函数及用法 昨天写了个帖子,汇总了下常见的JavaScript中的字符串操作函数及用法.今天正好有时间,也去把JavaScript中常见的数组操作函数及用法总结一下 ...
- [转] 有趣的JavaScript原生数组函数
在JavaScript中,可以通过两种方式创建数组,Array构造函数和 [] 便捷方式, 其中后者为首选方法.数组对象继承自Object.prototype,对数组执行typeof操作符返回‘obj ...
- JavaScript原生数组函数
有趣的JavaScript原生数组函数 在JavaScript中,可以通过两种方式创建数组,构造函数和数组直接量, 其中后者为首选方法.数组对象继承自Object.prototype,对数组执行typ ...
- 有趣的JavaScript原生数组函数
本文由 伯乐在线 - yanhaijing 翻译.未经许可,禁止转载!英文出处:flippinawesome.欢迎加入翻译小组. 在JavaScript中,可以通过两种方式创建数组,Array构造函数 ...
- JavaScript进阶系列02,函数作为参数以及在数组中的应用
有时候,把函数作为参数可以让代码更简洁. var calculator = { calculate: function(x, y, fn) { return fn(x, y); } }; var su ...
- JavaScript 数组操作函数--转载+格式整理
JavaScript 数组操作函数(部分)--转载+格式整理 今天看了一篇文章,主要讲的对常用的Js操作函数:push,pop,join,shift,unshift,slice,splice,conc ...
- javascript中的所有内容都是一个对象:字符串、值、数组、函数…
javascript中的所有内容都是一个对象:字符串.值.数组.函数…此外,javascript允许自定义对象.javascript对象JavaScript提供多个内置对象,如字符串.日期.数组等.对 ...
随机推荐
- teach-es6
ES6: ECMAScript6 js: 组成部分: ECMA DOM BOM ECMA是“European Computer Manufactures Association”的缩写,中文称欧洲计算 ...
- lua编译器和ide
这里有一个网址,上面记录了大部分流行的LUA开发工具,包括IDE和Editor. http://www.wowwiki.com/Lua_editors 一.Eclipse LDT 1.语法高亮,自动提 ...
- VBNET线程和委托20191223
1.每个程序有一个主线程,如果一个循环处于主线程中,程序在较长的循环,将出现“不响应”的情况. 线程在System.Threading中.线程创建可专用于一个功能块(方法.函数), 线程的开始用Sta ...
- Elasticsearch-如何控制存储和索引文档(_source、_all、返回源文档的某些字段)
Elasticsearch-如何控制存储和索引文档(_source._all) _source:可以在索引中存储文档._all:可以在单个字段上索引所有内容. 1. 存储原有内容的_source _s ...
- Oracle-DDL 2- 视图&索引
DDL-数据定义语句: 二.视图 --视图(view),本身不保存数据,保存的是一个查询语句--对视图的操作等同于对查询语句中源数据的操作--视图占用存储空间较小,可以快速的对特定数据进行访问和操作- ...
- Vue的快速入门
1 环境准备 1 下载安装Node 地址https://nodejs.org/en/download/ 完成后通过cmd打开控制台输入node -v 可以看到版本信息 2 通过该node自带的npm ...
- Django 中事务的使用
目录 Django 中事务的使用 Django默认的事务行为 在HTTP请求上加事务 在View中实现事务控制 使用装饰器 使用context manager autocommit() commit_ ...
- 详解EveryThing
摘要:Everything几乎是每个职场人必备的效率工具,但同事们都只用它的一两个基本功能,并没有发挥出该软件的真正效率.实际上,把Everything的功能用到极致能够成倍的提升我们的工作效率,本文 ...
- SpringBoot之使用Druid连接池以及SQL监控和spring监控
一.引入maven依赖 <dependencies> <dependency> <groupId>org.springframework.boot</grou ...
- 利用mybatis-generator自动生成代码(转)
利用mybatis-generator自动生成代码 mybatis-generator有三种用法:命令行.eclipse插件.maven插件.个人觉得maven插件最方便,可以在eclipse/int ...