【原创】Array方法笔记

1、sort(orderfunction):按指定的参数对数组进行排序,默认以字符串的字典顺序进行排序(如果是数字,会先转成字符),如果都是数字,则按数字第一位大小排序,如:

var arr=[10,-2,4,1,8,15,8,49,27,6],b=arr.sort();console.log(b);

[-2, 1, 10, 15, 27, 4, 49, 6, 8, 8]
undefined

添加orderfunction,可排序纯数字数组,如下:

1 unction sortnumber(a,b){return a-b}
2
3 var arr=[10,-2,4,1,8,15,8,49,27,6],
4
5 b=arr.sort(sortnumber);console.log(b);
6
7 [-2, 1, 4, 6, 8, 8, 10, 15, 27, 49]
8 undefined

sort()的返回值和原值都是排序过的值,检验如下:

 1 function sortnumber(a,b){return a-b}
 2 var arr=[10,-2,4,1,8,15,8,49,27,6],
 3 b=arr.sort(sortnumber);console.log(arr);
 4
 5 [-2, 1, 4, 6, 8, 8, 10, 15, 27, 49]
 6 undefined
 7
 8
 9 function sortnumber(a,b){return a-b}
10 var arr=[10,-2,4,1,8,15,8,49,27,6]
11 ,b=arr.sort(sortnumber);console.log(arr==b);
12
13 true
14 undefined

对对象数组进行排序,可以用以下函数:

/by函数接受一个成员名字符串做为参数

//并返回一个可以用来对包含该成员的对象数组进行排序的比较函数

var by = function(name){

    return function(o, p){
        var a, b;
         if (typeof o === "object" && typeof p === "object" && o&& p) {
            a = o[name];
            b = p[name];
            if (a === b) {
               return 0;
            }
            if (typeof a === typeof b) {
                return a < b ? -1 : 1;
            }
           return typeof a < typeof b ? -1 : 1;

       }
       else {
            throw ("error");
        }
    }
}

调用by函数可以这样写:

var employees=[]
employees[0]={name:"George", age:32, retiredate:"March 12, 2014"}
employees[1]={name:"Edward", age:17, retiredate:"June 2, 2023"}
employees[2]={name:"Christine", age:58, retiredate:"December 20, 2036"}
employees[3]={name:"Sarah", age:62, retiredate:"April 30, 2020"}

直接调用函数:
employees.sort(by("age"));

2、slice(start,end)英文名为“切片” 表示从数组中切去某一片段,start为开始索引,end为终止索引位置(切出来的部分包括start,不包括end),原数组不变

 1 var arr=[10,-2,4,1,8,15,8,49,27,6],
 2 b=arr.slice(3,6);console.log(arr==b);
 3
 4 false
 5 undefined
 6
 7 var arr=[10,-2,4,1,8,15,8,49,27,6],
 8 b=arr.slice(3,6);console.log(b);
 9
10 [1, 8, 15]
11 undefined
12
13 var arr=[10,-2,4,1,8,15,8,49,27,6],
14 b=arr.slice(3,6);console.log(arr);
15
16 [10, -2, 4, 1, 8, 15, 8, 49, 27, 6]
17 undefined

另外,start=end时,切出来为空数组b= [];start为负数时,切出来也为空数组b=[];

当start为正数时,end为负数时,-1表示数组表示最后一个(切片是end为最后一个,左闭右开,不切出来),-2表示倒数第二个,这时,取不到最后一个数字,以此类推,测试如下:

var arr=[10,-2,4,1,8,15,8,49,27,6],
b=arr.slice(3,3);console.log(b);

[]
undefined

var arr=[10,-2,4,1,8,15,8,49,27,6],
b=arr.slice(3,-1);console.log(b);

[1, 8, 15, 8, 49, 27]
undefined

var arr=[10,-2,4,1,8,15,8,49,27,6],
b=arr.slice(-1,2);console.log(b);

[]
undefined

var arr=[10,-2,4,1,8,15,8,49,27,6],
b=arr.slice(-1,5);console.log(b);

[]
undefined

var arr=[10,-2,4,1,8,15,8,49,27,6],
b=arr.slice(-1,5);console.log(arr);

[10, -2, 4, 1, 8, 15, 8, 49, 27, 6]
undefined

var arr=[10,-2,4,1,8,15,8,49,27,6],
b=arr.slice(3,0);console.log(b);

[]
undefined

var arr=[10,-2,4,1,8,15,8,49,27,6],
b=arr.slice(3,-2);console.log(b);

[1, 8, 15, 8, 49]
undefined

var arr=[10,-2,4,1,8,15,8,49,27,6],
b=arr.slice(3,-0);console.log(b);

[]
undefined

var arr=[10,-2,4,1,8,15,8,49,27,6],
b=arr.slice(3,-1);console.log(b);

[1, 8, 15, 8, 49, 27]
undefined

var arr=[10,-2,4,1,8,15,8,49,27,6],
b=arr.slice(3,11);console.log(b);

[1, 8, 15, 8, 49, 27, 6]
undefined
时间: 2024-08-24 14:06:23

【原创】Array方法笔记的相关文章

ES5中新增的Array方法详细说明

ES5中新增的不少东西,了解之对我们写JavaScript会有不少帮助,比如数组这块,我们可能就不需要去有板有眼地for循环了. ES5中新增了写数组方法,如下: forEach (js v1.6) map (js v1.6) filter (js v1.6) some (js v1.6) every (js v1.6) indexOf (js v1.6) lastIndexOf (js v1.6) reduce (js v1.8) reduceRight (js v1.8) 浏览器支持 Ope

S5中新增的Array方法详细说明

ES5中新增的Array方法详细说明 by zhangxinxu from http://www.zhangxinxu.com 本文地址:http://www.zhangxinxu.com/wordpress/?p=3220 一.前言-索引 ES5中新增的不少东西,了解之对我们写JavaScript会有不少帮助,比如数组这块,我们可能就不需要去有板有眼地for循环了. ES5中新增了写数组方法,如下: forEach (js v1.6) map (js v1.6) filter (js v1.6

STL array方法总结(一)Iterators(20)

这里是array方法的一些总结,具体的可以看后面的链接: public member function <array> std::array::begin iterator begin() noexcept; const_iterator begin() const noexcept; 返回一个指向array容器第一个元素的iterator. 注意和array::front不同,front是返回一个指向第一个元素的引用,这个函数是返回一个指向第一个元素的随机访问迭代器. Parameters

STL array方法总结(二)Capacity和Modifiers(21)

这里是array方法的一些总结,具体的可以看后面的链接: public member function <array> std::array::size constexpr size_type size() noexcept; 返回array里面元素的数目. Parameters none Return Value array中元素的数目. 原文地址:http://blog.csdn.net/qq844352155/article/details/38944721 --------------

STL array方法总结(三)Element access(22)

这里是array方法的一些总结,具体的可以看后面的链接: public member function <array> std::array::operator[] reference operator[] (size_type n); const_reference operator[] (size_type n) const; 返回array容器中位置为n的元素的引用. Parameters n array中元素的位置. 注意第一个元素位置是0而不是1. Return value 返回指定

阅读ICONIX方法笔记

主要步骤包括:1.域建模(领域模型)2.用例建模(动态模型)3.分析建模  4.健壮性分析5.交互建模(绘出时序图和设计级类图)      域模型(是一种由内向外的方式来分析系统的)(1) 确定直实世界中的抽象,即系统中将涉及的主要的概念性对象.(2) 域类(可以认为是实体类)的来源就是需求.领域知识以及问题陈述中的相关名词或名词短语等术语.(3) 识别完了域类后,就可以进行问题域建模,即进行域类图的绘制(可以有类之间的关联和泛化等关系)注意:这里的域类图只是一种表现形式,里面的一个类的层次关系

array方法

shift:删除原数组第一项,并返回删除元素的值:如果数组为空则返回undefined var a = [1,2,3,4,5]; var b = a.shift(); //a:[2,3,4,5] b:1 unshift:将参数添加到原数组开头,并返回数组的长度 var a = [1,2,3,4,5]; var b = a.unshift(-2,-1); //a:[-2,-1,1,2,3,4,5] b:7 注:在IE6.0下测试返回值总为undefined,FF2.0下测试返回值为7,所以这个方法

(原创)c#学习笔记02--编写c#程序03--Windows Forms应用程序

2.3  Windows Forms应用程序 本解讲解如何创建一个windows forms应用程序,参考:(原创)c#学习笔记02--编写c#程序01--开发环境,修改为选择:Windows 窗体应用程序.如下图: 单击“确定”(OK)按钮,创建项目后,应该会看到一个空白的Windows窗体.把鼠标指针移到屏幕左边的“工具箱”(Toolbox)栏上,然后移到“所有 Windows 窗体”(All Windows Forms)选项卡上的Button选项,在该选项上双击,就会在应用程序的主窗体(F

ECMAScript5中新增的Array方法实例详解

ECMAScript5标准发布于2009年12月3日,它带来了一些新的,改善现有的Array数组操作的方法.(注意兼容性) 在ES5中,一共有9个Array方法:http://kangax.github.io/compat-table/es5/ Array.prototype.indexOf Array.prototype.lastIndexOf Array.prototype.every Array.prototype.some Array.prototype.forEach Array.pr