JavaScript中Array的实用操作技巧分享


Posted in Javascript onSeptember 11, 2016

一、关于Array

Array的创建很灵活,可以使用Array构造函数,也可以直接创建数组“字面量”。

var arr = new Array(); //[]
var brr = Array();  //[] 两者等效

var arr = Array(3); //[]
arr.length;   //3 长度为3的空数组

var arr = Array(22,33,'qq',{}); //[22, 33, "qq", Object]
var brr = [22,33,'qq',{}];  //同上

Array是JavaScript的内置对象,是的,虽然是数组,也是一种对象!!

使用typeof判断会返回Object! 而Array.isArray方法能更精准判断其类型。

var a = [];
typeof a;   //object
Array.isArray(a); //true

二、常用方法

push()方法

push方法能添加一个或者多个元素至数组的末端,并返回被改变后的数组的长度!

注意: ①其返回的是数组的长度,而不是数组!

            ②此方法会改变原数组!!

var arr = Array(22,33,'qq',{});
arr.push('weibo');    //5
arr       //[22, 33, "qq", {}, "weibo"]

当我们想合并两个数组时需要这样使用

var a = [22,33];
var b = [44,55];

Array.prototype.push.apply(a, b)
// 或者
a.push.apply(a, b)
// 或者
a.push(44,55);   //此时的数组a = [22,33,44,55];

注意不能写成以下这样!!

a.push(b);
a;      //[22,33,[44,55]]
a.length;     // 3 !!
console.log(a);   //[22, 33, Array[2]]

直接写成a.push(b) ,会将b认为是一个元素添加到a,并不能得到理想效果!

倘若现在又两个对象数组需要合并就像如下:

var a = [
 {name: 'Stark', value: 'Ironman'},
 {name: 'Cap' , value: 'Oldman'}
];
var b = [
 {name: 'Jerry', email: 'Jerry@qq.com'},
 {name: 'Lory' , email: 'Lory@163.com'},
 {name: 'susan', email: 'susan@gmail.com'}
];
//错误写法
a.push(b);   //3
console.log(a);  //[Object, Object, Array[3]]
//正确写法
a.push.apply(a.b); //5
console.log(a);  //[Object, Object, Object, Object, Object]

pop()方法

push相反,是删除数组最后一个元素并返回这个被删除的元素:

var a = ['qq', 'weibo', 'weixin'];
a.pop();        // 'weixin'
a;         // ['qq', 'weibo']

join()方法

将数组按照相应参数分隔开,并以字符串形式返回,若空参数,则使用‘,'分隔。此方法并不会改变原数组:

var a = [1, 2, 3, 4];
a.join(' ')  // '1 2 3 4'
a.join(' | ')  // "1 | 2 | 3 | 4"
var b = a.join() // "1,2,3,4"
console.log(a); // [1, 2, 3, 4]
console.log(b); // "1,2,3,4"

concat()方法

能将多个数组合并,返回一个新的数组,但原数组不变:

var a = [22,33];
var b = [44,55];
var c = a.concat(b);
console.log(a);  //[22, 33]
console.log(b);  //[44, 55]
console.log(c);  //[22, 33, 44, 55]
var a = [{name: 'tom', email: 'tom@example.com'},
   {name: 'peter', email: 'peter@163.com'}];
var b = [{name: 'Jerry', email: 'Jerry@qq.com'},
   {name: 'Lory', email: 'Lory@dfl.com'},
   {name: 'susan', value: 'susan@gmail.com'}];
var c = a.concat(b);
c;   // [{name: 'tom', email: 'tom@example.com'},
   // {name: 'peter', email: 'peter@163.com'},
   // {name: 'Jerry', email: 'Jerry@qq.com'},
   // {name: 'Lory', email: 'Lory@dfl.com'},
   // {name: 'susan', value: 'susan@gmail.com'}]

map()方法

map方法会对数组的各个成员依次调用一个函数,返回一个经函数处理后的新数组,但原数组并不会被改变!

var numbers = [1, 2, 3];
var num  = numbers.map(function (n) {  // [2, 4, 6]
     return n * 2;
    });
numbers;          //[1,2,3]

map方法调用的函数的参数为一个时,此参数表示数组的当前成员;当参数为三个是依次为

当前成员elem,索引index,原数组本身arr

var brr = [1, 2, 3].map( function(elem, index, arr) {
 return elem * index;
});
brr; // [0, 2, 6]

map方法还可以接受第二个参数,表示回调函数执行时this所指向的对象。

var arr = ['a', 'b', 'c'];

var brr = [0, 2].map(function(e){
 return this[e];
}, arr)
brr; // ['a', 'c']

在应用中,有时使用ajax技术需要动态利用参数数组转换成一个url请求时,map方法会非常方便,例如:

var b = [
 {name: 'Jerry', email: 'Jerry@qq.com'},
 {name: 'Lory', email: 'Lory@dfl.com'},
 {name: 'susan', value: 'susan@gmail.com'}];
 
var url = b.
   map(function(n){
    return n.name + "=" + n.email
   })
   .join("&");
   
console.log(url); 
   //Jerry=Jerry@qq.com&Lory=Lory@dfl.com&susan=susan@gmail.com

然后在url前面加上ip地址以及action和方法,就能完成一个ajax所需的动态url的拼接,例如:

var endURL = "localhost:8080/XXXX/" + eventAction + "!" + operation + "?"
    + url;

总结

以上就是这篇文章的全部内容,希望对能大家的学习或者工作带来一定的帮助,如果有疑问大家可以留言交流。

Javascript 相关文章推荐
Javascript之旅 对象的原型链之由来
Aug 25 Javascript
Javascript实现页面跳转的几种方式分享
Oct 26 Javascript
JS密码生成与强度检测完整实例(附demo源码下载)
Apr 06 Javascript
vue.js初学入门教程(1)
Nov 03 Javascript
fckeditor部署到weblogic出现xml无法读取及样式不能显示问题的解决方法
Mar 24 Javascript
Vue.js 2.0 移动端拍照压缩图片预览及上传实例
Apr 27 Javascript
JavaScript解析任意形式的json树型结构展示
Jul 23 Javascript
node.js 模块和其下载资源的镜像设置的方法
Sep 06 Javascript
详解nuxt路由鉴权(express模板)
Nov 21 Javascript
使用rollup打包JS的方法步骤
Dec 05 Javascript
vue中如何实现后台管理系统的权限控制的方法步骤
Sep 05 Javascript
react-native 实现购物车滑动删除效果的示例代码
Jan 15 Javascript
JS实现六边形3D拖拽翻转效果的方法
Sep 11 #Javascript
最全面的百度地图JavaScript离线版开发
Sep 10 #Javascript
简单分析javascript中的函数
Sep 10 #Javascript
javascript数组常用方法汇总
Sep 10 #Javascript
JavaScript实现输入框与清空按钮联动效果
Sep 09 #Javascript
Three.js快速入门教程
Sep 09 #Javascript
jQuery动态修改字体大小的方法【测试可用】
Sep 09 #Javascript
You might like
PHP启动windows应用程序、执行bat批处理、执行cmd命令的方法(exec、system函数详解)
2014/10/20 PHP
yii分页组件用法实例分析
2015/12/28 PHP
简单谈谈PHP中的include、include_once、require以及require_once语句
2016/04/23 PHP
使用PHP+MySql实现微信投票功能实例代码
2017/09/29 PHP
PHP rsa加密解密算法原理解析
2020/12/09 PHP
jQuery UI Dialog控件中的表单无法正常提交的解决方法
2010/12/19 Javascript
jquery中获取id值方法小结
2013/09/22 Javascript
jQuery的css()方法用法实例
2014/12/24 Javascript
自己动手写的jquery分页控件(非常简单实用)
2015/10/28 Javascript
jQuery实现图片向左向右切换效果的简单实例
2016/05/18 Javascript
关于在Servelet中如何获取当前时间的操作方法
2016/06/28 Javascript
javascript中的后退和刷新实现方法
2016/11/10 Javascript
Angular的MVC和作用域
2016/12/26 Javascript
ES6中class类用法实例浅析
2017/04/06 Javascript
angularjs实现首页轮播图效果
2017/04/14 Javascript
Node.js安装配置图文教程
2017/05/10 Javascript
vue 做移动端微信公众号采坑经验记录
2018/04/26 Javascript
详解vue中axios请求的封装
2019/04/08 Javascript
vue使用i18n实现国际化的方法详解
2019/09/05 Javascript
Python开发的单词频率统计工具wordsworth使用方法
2014/06/25 Python
将图片文件嵌入到wxpython代码中的实现方法
2014/08/11 Python
Python实现备份文件实例
2014/09/16 Python
Python中join和split用法实例
2015/04/14 Python
Python中的XML库4Suite Server的介绍
2015/04/14 Python
Python中SOAP项目的介绍及其在web开发中的应用
2015/04/14 Python
使用Python从有道词典网页获取单词翻译
2016/07/03 Python
Pandas0.25来了千万别错过这10大好用的新功能
2019/08/07 Python
python:删除离群值操作(每一行为一类数据)
2020/06/08 Python
Python生成随机验证码代码实例解析
2020/06/09 Python
Selenium 安装和简单使用的实现
2020/12/04 Python
怎样写留学自荐信
2013/11/11 职场文书
建筑总经理岗位职责
2014/02/02 职场文书
化学系大学生自荐信范文
2014/03/01 职场文书
运动会稿件100字
2014/09/24 职场文书
合作协议书范本
2014/10/25 职场文书
2014年社区民政工作总结
2014/12/02 职场文书