本文并没有详细列出Array方法详解,本文侧重点在于使用Array编程时候要注意的问题。
1.Array.concat

var o = {name:"Gavin"};
var a1 = [1,2,3];
var a2 = [6,o];
var arr1 = a1.concat(a2);
a1[0] = 0;
o.name = "GavinPan";
console.log(arr1);//[ 1, 2, 3, 6, {name:"GavinPan"} ] 

concat 将两个数组浅拷贝连接
2.Array.join

var o2 = {name:"Gavin"};
var arr2 = ['a', 1, o2];
var str2 = arr2.join('');
console.log(str2);//a1[object Object]

join 会把数组的每一项变成字符串,再把数组变成字符串。
在IE6、7的时代使用jion去连接大量字符串要优于使用+号,目前建议使用+号连接,参考《高性能网站进阶指南》中字符串优化
3. Array.pop Array.push
可以这样实现,只是提供一种思路
// Array.method('pop', function () {
//     return this.splice(this.length-1,1)[0];
// });
// Array.method('pop', function () {
//     this.splice.apply(
//         this, [this.length, 0].concat(Array.prototype.slice.apply(arguments))
//     );
//     return this.length;
// });
4. Array.reverse

var arr4 = [1,2,3];
var a4 = arr4.reverse();
arr4[2] = 'reverse';
console.log(arr4); //Array(3) [ 3, 2, "reverse" ]
console.log(a4); //Array(3) [ 3, 2, "reverse" ]

reverse 将数组翻转,返回数组本身。arr4 与 a4 是一个数组。
5. Array.shift
移除数组第一项,比Array.pop要慢的多
6.Array.slice(start, end)
对数组的一段做浅拷贝,end省略表示一直到最后
7.Array.sort
 数组排序,会把元素视为字符串,不靠谱,建议自己写。
8.Array.splice(index, count, item...)

var arr8 = [1,2,3];
var a8 = arr8.splice(1, 1,'a','b');
console.log(arr8); //[ 1, "a", "b", 3 ]
console.log(a8); //[ 2 ]

splice 从index索引位置删除count个数的项,返回数组删除项。如果item不为空将在index索引位置添加item项。注意不要混淆slice,slice是浅拷贝一段数组。
9.Array.unshif
//把元素添加到数组的第一项
// Array.method('unshif', function(){
//     this.splice.applay(this, [0 ,0].concat(Array.prototype.slice.apply(arguments)));
//     return this.length;
// });

Array.prototype.unshif1 = function(){console.log(`----`)console.log(Array.prototype.slice.apply(arguments));this.splice.apply(this, [0 ,0].concat(Array.prototype.slice.apply(arguments)));return this.length;
};var arr9 = [1,2,3,4];
arr9.unshif1('a','b');
console.log(arr9)

有关slice填坑,w3cschool arrayObject.slice(start,end) start 必需,但是以下结果是对的。MND中给的答案正确 arr.slice([begin[, end]]),slice可以什么参数都不传。

var arrtest = [1,2,3];
var arrtest1 = arrtest.slice();
console.log(arrtest1);

扩展解释
Array.prototype.slice.apply(arguments),这么写的原因是,arguments 是类似数组的对象,他不是数组,所以不能使用数组的方法slice,通过apply去调用数组的slice方法,结果返回数组。
arr9.unshif1('a','b'); 可以看做 arr9.splice(0, 0, 'a', 'b');

转载于:https://www.cnblogs.com/gavinpan/p/11448392.html

javascript语言精粹数组篇之Array的方法注意事项相关推荐

  1. Javascript语言精粹之Array常用方法分析

    Javascript语言精粹之Array常用方法分析 1.Array常用方法分析 1.1 Array.prototype.sort() Javascript的默认比较函数假定被排序元素都是字符串,所以 ...

  2. 《JavaScript语言精粹 修订版》 读书笔记

    之前看到这篇文章, 前端网老姚浅谈:怎么学JavaScript?,说到怎么学习JavaScript,那就是 看书.分析源码. 10本书读2遍的好处,应该大于一本书读20遍. 看书主动学习,看视频是被动 ...

  3. 《javascript语言精粹》读书笔记——函数

    这几天发现了一本好书,又薄又精辟,<JavaScript语言精粹> 看了对象.函数这两节,发现书如其名,确实是精粹. 函数的调用 函数调用的方式有四种: - 方法调用模式 - 函数调用模式 ...

  4. javascript语言精粹 微盘_JavaScript语言精粹(修订版)pdf

    摘要 "学习.理解.实践大师的思想,我们才有可能站在巨人的肩上,才有机会赶超大师,这本书就是开始." "这是一本介绍JavaScript语言本质的重要书籍,值得任何正在或 ...

  5. JavaScript语言精粹——函数(第二部分)

    九.参数 十.返回 十一.异常 十二.扩充类型的功能 十三.递归 十四.作用域 十五.闭包 十六.回调 十七.模块 十八.级联 十九.套用 二十.记忆 九.参数: 当函数被调用的时候,会得到一个 &q ...

  6. 《JavaScript语言精粹》学习笔记(函数(2))

    <JavaScript语言精粹>学习笔记(函数(2)) 函数(Functions) 参数(Arguments) 当参数被调用时,会得到一个"免费"的参数数组argume ...

  7. 读阮一峰对《javascript语言精粹》的笔记,我有疑问。

    <javascript语言精粹>是一本很棒的书籍,其中作者在附录列出了12种他所认为的javascript语言中的糟粕. 我最近开始跟读前端前辈的博客,其中读到了阮一峰的<12种不宜 ...

  8. 精通javascript、javascript语言精粹读书笔记

    于是选择两本书做最后的冲刺: 精通javascript(jquery之父著作),javascript语言精粹.希望我也能成为一个javascript的好手. Dom Elements的属性 精通jav ...

  9. JavaScript语言精粹学习之继承

    JavaScript也有面对对象,面的对象很重要的一点就是继承,语言精粹中的继承篇章写的复杂难懂,且有些东西和现在的es6相比太过于老了,读完后这里我自己整理了一下JavaScript的继承,也对语言 ...

最新文章

  1. HDU4009(最小树形图)
  2. Django error信息邮件通知功能配置部署
  3. Django模板系统
  4. inotify java maven_INOTIFY 系列(一) 安装 和初步使用
  5. python array的应用
  6. Debug Tensorflow: Expected these arguments to match one of the following 4 option(s):
  7. 局部和全局引用的操作
  8. 微信小程序wx.request中post请求时data中参数不能传到后台
  9. linux远程windows执行cmd,Linux服务器远程连接window服务器并执行cmd命令
  10. csuoj 1351: Tree Counting
  11. python哲学内容是_Python哲学(import this)
  12. android 动态画直线,Android使用自定义view在指定时间内匀速画一条直线的实例代码...
  13. ZOJ-2364 Data Transmission 分层图阻塞流 Dinic+贪心预流
  14. 文本框样式 html,HTML文本框样式大全
  15. 数学分析教程(科大)——2.10笔记+习题
  16. Vcenter7部署3par ssmc
  17. 读了本书《3000美金,我周游了世界》
  18. 【demo记录】百度地图获取当前所在城市
  19. “人生苦短,我用Python“——网络嗅探与欺骗
  20. Photoshop Resource(PS网站资源)

热门文章

  1. 微信开发:配置 wx.config 实现图像接口(详细配置 wx.config 接口)
  2. 微软MSDN Library中的问题收集(2016年)
  3. 通信原理6.7、部分响应和时域均衡
  4. 【大学物理·电磁感应 电磁场理论】磁场的能量
  5. 个性化自己的U盘,更改U盘的显示图标
  6. java游戏笑傲_快乐家族-笑傲武林
  7. 『LeetCode|每日一题』---->小行星碰撞
  8. Access denied for user root. Superuser privilege is required...
  9. linux内核增加emc拨号功能,[转载]EMC存储最佳实践(五)
  10. 传播智客学习笔记--L8短信通知