`
zcwfeng
  • 浏览: 98193 次
  • 性别: Icon_minigender_1
  • 来自: 吉林
社区版块
存档分类
最新评论

JS Array 中 shift() pop()

 
阅读更多

在 JS Array 中支持两个方法,shift()pop(),分别是指从一个数据中的最前面和最后面删除一个值,并返删除值。看一个示例就明白了:

1 vararr = ['s','o','f','i','s','h'];
2
3 arr.shift();// 返回 's'
4 arr;// 目前是 ['o','f','i','s','h']
5 arr.pop()// 返回 'h'
6 arr// 目前是 ['o','f','i','s']

在很多 JS 框架中可以很常见的是,一个方法提供你传几个参数,而这些参数中,部分是可以忽略的,这些可以忽略的点可能是第一个,也可能是最后一个。传统的写法是判断参数有没有存在,或者参数的个数来决定最终取值。

这里,我们可以利用函数的arguments对象,以及 Array 中的shiftpop来实现灵活的应用。

一、使用shift

如何实现一个.bind()方法,让 fn api 如下:

1 // fn 的作用域限定于 object 下
2 // 除 object 外,所有 bind 方法的参数都将传给 fn
3 fn.bind(object, param1, param2, [, paramN]);

看一个实例先。当然,这例子可能更为重要的是callapply的应用。不过,我们想要说的是shift的应用:

01 // 来自 Prototype.js 的 [`.bind`](http://www.prototypejs.org/api/function/bind) 方法
02 Function.prototype.bind =function(){
03 varfn =this,
04 args = Array.prototype.slice.call(arguments),
05 object = args.shift();
06 returnfunction(){
07 returnfn.apply(object,
08 args.concat(Array.prototype.slice.call(arguments)));
09 };
10 };

我们可以利用对arguments对象(array-like object,需要转换成真正的 array)进行shift来取出,像这个方法,主要利用它们来分出作为作用域的object,然后巧妙地把余下的参数数组传给fn,即调用我们想限定到object作用域内的函数。

二、使用pop

最近在试用 seajs,我们就拿它的一个 api 来说吧:

1 define(id, dependencies, callback)

这个定义一个模块的 api,iddependencies都是可以省略的。这里,如何实现这个支持呢?如果使用 if 来判断,真就得if (arguments === 1) {...} elseif ...一大堆了。当然,这样有时候也有好处的(?,想想)。这里,我们可能用来pop来方便实现这样的支持:

01 vardefine =function(){
02 // 取出这个 callback
03 varargs = [].slice.call(arguments)
04 fn = args.pop();
05 // 做点其他神马事
06 fn.apply(null, args)
07 // ...
08 },
09 callback =function(){
10 varargs = arguments, i = 0, len = args.length;
11 if(len === 0) console.log('只有一个 callback');
12 for(;i<len;i++) {
13 console.log(args[i]);
14 }
15 }
16
17 // 看看他们三个的执行结果
18 define(callback);
19 define('有两个参数', callback);
20 define('有三个参数','hello world', callback);


分享到:
评论

相关推荐

    JS中使用Array函数shift和pop创建可忽略参数的例子

    在 JS Array 中支持两个方法,shift() 和 pop(),分别是指从一个数据中的最前面和最后面删除一个值,并返删除值。看一个示例就明白了: 代码如下:var arr = [‘s’,’o’,’f’,’i’,’s’,’h’]; arr.shift(); //...

    js-array-playground:JavaScript数组游乐场

    Array.shift() Array.pop() Array.splice() Array.join() Array.concat() Array.slice() Array.copyWithin() Array.entries() Array.every() Array.fill() Array.find() Array....

    javascript中活灵活现的Array对象详解

    JavaScript中的Array对象,就是我们常说的数组对象,主要用于封装多个任意类型的数据,并对它们进行管理。 所有主流浏览器均支持Array对象。 大家都知道Array实例有这四个方法:push、pop、shift、unshift。大家也都...

    fecal:简单JavaScript库,适合经常错误输入Array方法pop(),shift()和unshift()的用户。

    Fecal.js 简单JavaScript库,适用于经常误输入JSON.parse()和Array方法pop() , shift()和unshift()或其他方法的人。如何使用只需在您的文档中包含lib/fecal.js文件... &lt; script src =" lib/fecal.js " &gt; &lt;...

    JS array数组部分功能实现

    实现了一些比较常见的array功能,并且使用了 jest 进行测试。 实现的方法包括: concat find flat forEach & map includes join pop push reduce reverse shift slice some sort splice unshift 有些同质化比较高的...

    JavaScript数组Array对象增加和删除元素方法总结

    本文实例总结了JavaScript数组Array对象增加和删除元素方法。分享给大家供大家参考。具体分析如下: pop 方法 移除数组中的最后一个元素并返回该元素。 arrayObj.pop( ) 必选的 arrayObj 引用是一个 Array 对象。 ...

    JS数组push、unshift、pop、shift方法的实现与使用方法示例

    本文实例讲述了JS数组push、unshift、pop、shift方法的实现与使用方法。分享给大家供大家参考,具体如下: 尾部添加(push) push() 方法将一个或多个元素添加到数组的末尾,并返回该数组的新长度。 从解释中可以看出...

    js 数组操作之pop,push,unshift,splice,shift

     } pop 方法 移除数组中的最后一个元素并返回该元素。 arrayObj.pop( ) 必选的 arrayObj 引用是一个 Array 对象。 说明 如果该数组为空,那么将返回 undefined。 代码如下:var a=[1,2,3,4] a.pop() alert&#...

    JavaScript Array对象详解

    2. 实例方法:介绍 Array 对象的实例方法:concat、every、filter、forEach、indexOf、join、lastIndexOf、map、pop、push、reverse、shift、slice、sort、splice、toString、tounshift等。 3. 静态方法:介绍 Array...

    js中数组Array的一些常用方法总结

    var list = new Array()是我们在js中常常写到的代码,今天就总结哈Array的对象具有哪些方法。 list[0] = 0; list[1] = 1; list[2] = 2; 或者这样声明:var list = [0,1,2] 1 shift()t:删除数组的第一个元素,返回删除...

    javascript中数组array及string的方法总结

    pop,shift返回该元素 reverse返回该元素 splice(start,deleteCount,addItem…),从原数组中删除和增加,返回删除的数组 不会改变原来的数组,返回新的数组 concat,join,slice(start,end) 记住这3个是返回新数组,其他...

    javascript 数组操作实用技巧

    1、concat方法 [作用] 将多个数组联合起来,这个方法不会改变现存的数组,它只返回了所结合数组的一份拷贝。... [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行] 3、pop、shift方法 [作用] pop方法删除和返回数

    JavaScript数组函数unshift、shift、pop、push使用实例

    s中数组的声明可以有几种方式声明 代码如下: var tmp = []; // 简写模式 var tmp = new Array(); // 直接new一个 var tmp = Array(); // 或者new也可以 在new数组的时候可以传入一个参数,表示数组的初始化长度 ...

    JScript内置对象Array中元素的删除方法

    Array对象除了提供了constructor、length和prototype外,还默认提供了13个方法:concat、join、pop、push、reverse、shift、slice、sort、splice、toLocaleString、toString 、unshift和valueOf,可是没有提供...

    JavaScript使用shift方法移除素组第一个元素实例分析

    JS中我们可以通过pop方法移除数组的最后一个元素,可以通过shift方法移除数组的第一个元素 &lt;!DOCTYPE html&gt; &lt;html&gt; &lt;body&gt; Click the button to remove the first element of the array. &lt;...

    JavaScript原生数组Array常用方法

    在入门Vue时, 列表渲染一节中提到数组的变异方法, 其中包括push(), pop(), shift(), unshift(), splice(), sort(), reverse(), 而concat()和slice()不属于变异方法. 在这里就复习一下Array所提供的这几个方法的使用

    JavaScript Array对象使用方法解析

    shift():删除数组的第一个元素,返回被删除的元素 unshift(val):数组的开头添加新的元素,返回操作完成后数组的长度 [removed] var arr = [1,2,3,4] // 在数组末尾添加元素 arr.push(5) console.log(arr) // ...

    JavaScript权威指南

    JavaScript权威指南 犀牛书 Chapter 1. Introduction to JavaScript Section 1.1. JavaScript Myths Section 1.2. Versions of JavaScript ... Array.shift( ) Array.slice( ) Array.sort( ...

    JavaScript基础知识之方法汇总结

    array.pop 移除数组最后一个元素,并返回这个元素.var A=arrA.pop(); array.push 将一个或多个参数附加到数组的尾部,并返回一个新长度值。arrA.push(“asd”); array.shift 移除数组的第一个元素,并返回这个元素

Global site tag (gtag.js) - Google Analytics