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基本概念初级讲解论坛贴的学习记录
Feb 22 Javascript
web网页按比例显示图片实现原理及js代码
Aug 09 Javascript
jQuery中使用Ajax获取JSON格式数据示例代码
Nov 26 Javascript
jQuery实现的背景动态变化导航菜单效果
Aug 24 Javascript
jQuery实现二级下拉菜单效果
Jan 05 Javascript
分享两段简单的JS代码防止SQL注入
Apr 12 Javascript
JS实现兼容各种浏览器的高级拖动方法完整实例【测试可用】
Jun 21 Javascript
关于Vue.js一些问题和思考学习笔记(1)
Dec 02 Javascript
JavaScript递归算法生成树形菜单
Aug 15 Javascript
在vue中利用v-html按分号将文本换行的例子
Nov 14 Javascript
element-ui tooltip修改背景颜色和箭头颜色的实现
Dec 16 Javascript
angular中的post请求处理示例详解
Jun 30 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下载生成的csv文件及问题总结
2015/08/06 PHP
php中curl和soap方式请求服务超时问题的解决
2018/06/11 PHP
imagettftext() 失效,不起作用
2021/03/09 PHP
如何用javascript控制上传文件的大小
2006/10/26 Javascript
javascript call方法使用说明
2010/01/11 Javascript
JQuery 文本框使用小结
2010/05/22 Javascript
一个简单的JS时间控件示例代码(JS时分秒时间控件)
2013/11/22 Javascript
jQuery实现按钮只点击一次后就取消点击事件绑定的方法
2015/06/26 Javascript
50 个 jQuery 插件可将你的网站带到另外一个高度
2016/04/26 Javascript
js停止冒泡和阻止浏览器默认行为的简单方法
2016/05/15 Javascript
Nodejs进阶:核心模块net入门学习与实例讲解
2016/11/21 NodeJs
javascript实现复选框全选或反选
2017/02/04 Javascript
js 动态生成html 触发事件传参字符转义的实例
2017/02/14 Javascript
jQuery表格(Table)基本操作实例分析
2017/03/10 Javascript
Vue实现移动端页面切换效果【推荐】
2018/11/13 Javascript
ES6模板字符串和标签模板的应用实例分析
2019/06/25 Javascript
layui实现下拉框三级联动
2019/07/26 Javascript
vue 实现一个简单的全局调用弹窗案例
2020/09/10 Javascript
uni-app使用countdown插件实现倒计时
2020/11/01 Javascript
浅谈Python中数据解析
2015/05/05 Python
详解python之多进程和进程池(Processing库)
2017/06/09 Python
详解python 模拟豆瓣登录(豆瓣6.0)
2019/04/18 Python
Python一行代码实现快速排序的方法
2019/04/30 Python
Django处理多用户类型的方法介绍
2019/05/18 Python
Django REST framework 如何实现内置访问频率控制
2019/07/23 Python
Python内置方法实现字符串的秘钥加解密(推荐)
2019/12/09 Python
手工制作的男士奢华英国鞋和服装之家:Goodwin Smith
2019/06/21 全球购物
印度尼西亚最完整和最大的在线药房网站:Farmaku.com
2019/11/23 全球购物
应用服务器有那些
2012/01/19 面试题
法学专业应届生求职信
2013/10/16 职场文书
机修工岗位职责
2013/11/24 职场文书
药学职务聘任书
2014/03/29 职场文书
2014年端午节演讲稿范文
2014/05/23 职场文书
法人单位授权委托书范文
2014/10/06 职场文书
公司市场部岗位职责
2015/04/15 职场文书
Mac M1安装mnmp (Mac+Nginx+MySQL+PHP) 开发环境
2021/03/29 PHP