javascript-数组的常用方法
除了第二点的方法以外,所有方法都不会改变数组本身
查了一下ECMAScript给数组这个对象已经原生地封装了许多很有用的方法,所以接下来我想在这里总结一下一些常用的数组内置方法:
1、join
var colors = ["red","blue","green"]; colors.join("$$"); colors.toString(); //"red$$blue$$green"
join()用于改变数组的分割。
2、修改数组内部数据的方法
//*
//*插入方法
//* //push方法
var colors = ["red"];
colors.push("blue","green"); //
colors.toString(); //"red,blue,green" //unshift方法
var colors = ["red"];
colors.unshift("blue","green"); //
colors.toString(); //"blue,green,red" //*
//*删除(退出)数组项方法
//* //pop方法
var colors = ["red","blue","green"];
colors.pop(); //"green" //shift方法
var colors = ["red","blue","green"];
colors.shift(); //"red" //*
//*功能最强的方法——splice(索引位置,要删除的个数,要插入的若干项数据)
//* //作为删除用途
var colors = ["red","blue","green"];
colors.splice(1,1); //["blue"]
colors.toString() //"red,green" //作为替换用途
var colors = ["red","blue","green"];
colors.splice(1,2,"white","black"); //["blue", "green"]
colors.toString(); //"red,white,black" //作为插入用途
var colors = ["red","blue","green"];
colors.splice(1,0,"white","black"); //[]
colors.toString(); //"red,white,black,blue,green" //排序,也会改变本数组
values = [2, 4, 6, 8, 10];
values.sort((a,b)=>{return b-a})
push()方法是从数组最后插入数组项,而unshift()则是从数组的最前插入数组项,注意插入的数组项在该数组的顺序保持与参数时候一致。
pop()方法是从数组最后“弹出”数组项,而unshift()则是从数组的最前“弹出”数组项。
而splice方法可以实现插入、删除、替换这3种功能:splice(索引位置,要删除的个数,要插入的若干项数据)
3、迭代方法
var numbers = [1,2,3,4,5,4,3,2,1]; //*
//*判断数组每一项
//* //every只有每一项都返回true,整个才会返回true
numbers.every(function(item,index,array){return item>2}) //false //some只要有一项返回true,整个就会返回true
numbers.some(function(item,index,array){return item>2}) //true //*
//*filter过滤器,返回一个由符合的项组成的数组
//*
numbers.filter(function(item,index,array){return item>2}) //[3, 4, 5, 4, 3] //*
//*逐项执行的迭代
//* //map有返回结果,我们叫它映射
numbers.map(function(item,index,array){return item*2}) //[2, 4, 6, 8, 10, 8, 6, 4, 2] //forEach没有返回结果
numbers.forEach(function(item,index,array){array[index] = item*2}) ;
alert(numbers); //[2, 4, 6, 8, 10, 8, 6, 4, 2]
大家可以根据不同的需求来调用js提供的原生的迭代方法!!
4、归并方法
reduce(callback[,initalValue]) 第二个参数是自定义初始值(就是第一次循环的pre)
最后是归并方法reduce()和reduceRight(),两者都会迭代数组所有项,其中reduce()从第一项开始,而reduceRight()从数组最后一项开始,出此之外两个函数完全相同
//reduce()中pre第一次为数组第一项,第二次开始为第一次函数返回值为pre
var values = [1,2,3,4,5];
var sum=values.reduce(function(pre,cur,index,array){return pre + cur});
alert(sum); // //reduceRight()中pre第一次为数组最后一项,第二次开始为第一次函数返回值为pre
var values = [1,2,3,4,5];
var sum=values.reduceRight(function(pre,cur,index,array){return pre + cur});
alert(sum); //
其实forEach()也完全可以实现,并且比以上两个归并方法更好理解,怎样实现这功能也看个人习惯。
ps:reduce除了用作求和,还可以用作递归寻找
例如说,有一个非常复杂的对象如果我们有一个path数组,存着一个路径,我们就可以用reduce来找到这个路径的“终点节点”:
path.reduce((obj,pathString=>obj[pathString],庞大的对象)
5、slice
slice是指定在一个数组中的元素创建一个新的数组,即原数组不会变
数组的 slice (非常类似于字符串的 slice。根据规范,slice 需要两个参数,起点和终点。它会返回一个包含了从起点开始,到终点之前之间所有元素的新数组。
理解 slice 的功能并不是太难:
'abc'.slice(1,2) // "b"
[14, 3, 77].slice(1, 2) // [3]
6、concat
concat() 方法用于连接两个或多个数组。
该方法不会改变现有的数组,而仅仅会返回被连接数组的一个副本。
var mya = new Array(3);
mya[0] = "1";
mya[1] = "2";
mya[2] = "3";
document.write(mya.concat(4,5)+"");//1,2,3,4,5
document.write(mya); //1,2,3
7.from(es6新增的)
从一个类似数组或可迭代对象中创建一个新的数组实例。
Array.from('foo'); // ["f", "o", "o"] Array.from(["a", "b", "c"]); // ["a", "b", "c"] //特殊的可以从{length:num}返回一个长度为num的数组
Array.from({length:5}); //[undefined,undefined,undefined,undefined,undefined] //第二个参数是map函数
Array.from({length:5},(v, i) => i); // [0,1,2,3,4]
8.delete
用于删除对象的某个属性,因此可以删除数组的某一项,或者对象的某一个属性。成功返回true,失败返回false
var a = [1,2,3];
delete a[1]; //true
a; //(3) [1, empty × 1, 3] var b = {name:'rick',age:21};
delete b.age; //true
b; //{name: "rick"}
javascript-数组的常用方法的更多相关文章
- JavaScript数组对象常用方法
JavaScript数组对象常用方法 方法 形式 返回值 是否改变原数组 描述 concat -items: ConcatArray[] 追加之后的数组 否 连接两个或更多的数组,并返回结果.注意 c ...
- javascript 数组的常用方法总结
前言 主要讨论一下数组的方法, 1.splice和slice的区别 2.pop和push 3.shift和unshift 4.join 5.forEach(es ...
- javascript数组的常用方法总结
http://jingyan.baidu.com/album/86fae346bce16d3c49121af9.html?picindex=1 1. concat()方法 数组和数组的 粘结: var ...
- JavaScript数组操作常用方法
@ 目录 数组基础遍历方法. for for of for in 数组的基础操作方法. push:尾部追加元素 pop:尾部移出元素 unshift:头部追加元素 shift:头部移出元素 splic ...
- 前端开发:Javascript中的数组,常用方法解析
前端开发:Javascript中的数组,常用方法解析 前言 Array是Javascript构成的一个重要的部分,它可以用来存储字符串.对象.函数.Number,它是非常强大的.因此深入了解Array ...
- JavaScript中数组操作常用方法
JavaScript中数组操作常用方法 1.检测数组 1)检测对象是否为数组,使用instanceof 操作符 if(value instanceof Array) { //对数组执行某些操作 } 2 ...
- 关于javascript数组的定义与其一些常用方法总结
由于JavaScript是一门宽松的语言,这种宽松可能会带来更加麻烦的事情.比如JavaScript的数组,定义与使用的方式太灵活有时候让人迷惑.下面将JavaScript中关于数组常用的方法.定义之 ...
- JavaScript数组方法速查,32个数组的常用方法和属性
JavaScript数组方法速查手册极简版 http://30ke.cn/doc/js-array-method JavaScript数组方法速查手册极简版中共收了32个数组的常用方法和属性,并根据方 ...
- JavaScript 数组 常用方法(二)
写在前面:续接上篇 JavaScript 数组 常用方法 数组常用方法第二弹来了: some && every 描述: every()与some()方法都是JS中数组的迭代方法. so ...
- JavaScript数组常用方法解析和深层次js数组扁平化
前言 数组作为在开发中常用的集合,除了for循环遍历以外,还有很多内置对象的方法,包括map,以及数组筛选元素filter等. 注:文章结尾处附深层次数组扁平化方法操作. 作为引用数据类型的一种,在处 ...
随机推荐
- jsp注册页面的省份联动(网上copy别人的,然后自己弄了一下才知道怎么用)
首先写一个js里面是所有的省份一些七七八八的东西,直接复制黏贴过去就好了. var addressInit = function(_cmbProvince, _cmbCity, _cmbArea, d ...
- 关于阻止PROE联网的一些想法!
前言:商业上使用盗版proe会被官方警告,官方是通过proe软件联网来获取你的ip地址,那他是怎么知道你是商业用途而不是个人(一般不会对个人的盗版行为进行警告)?这不难,应该是通过检测同一ip下有多台 ...
- nyoj_253:LK的旅行(旋转卡壳入门)
题目链接 求平面最大点对. 找凸包 -> 根据凸包运用旋转卡壳算法求最大点对(套用kuang巨模板) 关于旋转卡壳算法 #include<bits/stdc++.h> using n ...
- laravel数据库查询返回的数据形式
版本:laravel5.4+ 问题描述:laravel数据库查询返回的数据不是单纯的数组形式,而是数组与类似stdClass Object这种对象的结合体,即使在查询构造器中调用了toArray(), ...
- 新一代开源Android渠道包生成工具Walle
本文转自:http://tech.meituan.com/android-apk-v2-signature-scheme.html 新一代开源Android渠道包生成工具Walle 新的应用签名方案A ...
- NLP —— 图模型(二)条件随机场(Conditional random field,CRF)
本文简单整理了以下内容: (一)马尔可夫随机场(Markov random field,无向图模型)简单回顾 (二)条件随机场(Conditional random field,CRF) 这篇写的非常 ...
- 各种demo:css实现三角形,css大小梯形,svg使用
各种demo: 1.css实现正方形 思路:width为0:height为0:使用boder-width为正方形的边长的一半,不占任何字节:border-style为固体:border-color为正 ...
- JavaBean和jsp的开发模型
1.实体类 package com.zdsofe.javaBean.work; public class Student { public String name; public String sex ...
- fiddler 抓取手机app请求包
今天心血来潮,也不知道怎么了,想着抓抓我们公司手机app的包看看,研究研究我们公司的接口,哎,我们api文档,我自己抓包看看吧.工具选择fiddler,理由免费,用着也舒服,手机设备 iPhone6 ...
- nginx的平滑升级
一:解释nginx的平滑升级 随着nginx越来越流行,并且nginx的优势也越来越明显,nginx的版本迭代也来时加速模式,1.9.0版本的nginx更新了许多新功能,例如stream四层代理功能, ...