一:Array数组

1、Array.isArray(参数) 检测是否是数组,*不兼容IE8,兼容IE9及以上、Chrome、Firefox等,要兼容IE8,可以用

Object.prototype.toString.call([1,2]) == "[object Array]"

2、实例方法:

  1).push(xx,xx,xx,...)  //插入一项或多项到数组的末尾,并修改length

    跟 arr[arr.length] = xxx; 插入类似

var arr = [1,2];
arr.push(3,4);
console.log(arr); // [1,2,3,4]
arr[arr.length] = 5;
console.log(arr[arr); //[1,2,3,4,5]

  2).pop()        //从数组末尾移除最后一项,并修改length

  3).shift()        //从数组头部移除第一项

  4).unshift(xx,xx,xx,...)   //从数组头部插入一项或多项

  5).reverse()      //反转数组

var arr = [1,2,3,4,5];
arr.reverse();
console.log(arr); //[5,4,3,2,1]

  6).sort()    //排序

    1、sort排序时,是把数组每一项toString()转成字符串,然后比较编码,所以:

var arr = [0, 1, 5, 10, 15] ;
arr.sort();
console.log(arr); //[0, 1, 10, 15, 5]

    2、如果要按数字大小排序,如果做?

var arr = [0, 1, 5, 10, 15] ;
function compare(value1, value2){
if(value1 < value2){
return -1;
}else if(value1 > value2){
return 1;
}else{
return 0;
}
}
arr.sort(compare);
console.log(arr); //[ 0, 1, 5, 10, 15 ]

    实际上,可以简写成:

var arr = [0, 1, 5, 10, 15] ;
// value1 - value2 是升序
// value2 - value1 是降序
function compare(value1, value2){
return value1 - value2;
}
arr.sort(compare);
console.log(arr); //[ 0, 1, 5, 10, 15 ]

    3、随机打乱数组:

var arr = [0, 1, 5, 10, 15] ;
// Math.random()每次返回的值不一样
function compare(value1, value2){
return Math.random() - 0.5;
}
arr.sort(compare);
console.log(arr);

    4、根据对象里的某一项,去排序

var arr = [{
"a": 5,
"b": "a1"
}, {
"a": 10,
"b": "a2"
}, {
"a": 1,
"b": "a3"
}]; arr = compare({
arr: arr,
prop: 'a',
type: 'down'
});
console.log(arr); function compare(options) {
if(typeof options.arr == "array" && options.arr.length == 0){
return [];
} options.type = options.type || "up";
var _prop = options.prop;
options.arr.sort(function(value1, value2){
if(options.type == "up"){
return value1[_prop] > value2[_prop];
}else if(options.type == "down"){
return value2[_prop] > value1[_prop];
}
}); return options.arr;
}

  7).concat(参数) [返回新数组]

var arr = [1,2];
var arr2 = arr.concat(); //复制功能
console.log(arr2);
var arr3 = arr.concat(arr); //合并数组功能
console.log(arr3);
var arr4 = arr.concat(11,[22,33]); //插入项和合并数组功能
console.log(arr4);

  8).slice( 起始位置, 结束位置*不包括 )[返回新数组]

  截取一个新数组,参数说明:起始和结束位置,从0开始计算;结束位置如果没有,就会截取到最后一个数组项

  9).splice() 数组中最为强大的方法

//1: 删除任意数量的项,splice(从第几项开始, 删除几项)
var arr = [1,2,3,4,5];
arr.splice(1, 2);
console.log(arr); //[ 1, 4, 5 ] //2: 向指定位置插入任意数量的项,splice(从第几项开始, 0, 插入项1, 插入项2, ... )
var arr = [1,2,3,4,5];
arr.splice(2, 0, 'a', 'b')
console.log(arr); //[ 1, 2, 'a', 'b', 3, 4, 5 ] //3: 向指定位置插入任意数量的项,splice(从第几项开始, 删除几项, 插入项1, 插入项2, ... )
var arr = [1,2,3,4,5];
arr.splice(2, 1, 'a', 'b')
console.log(arr); //[ 1, 2, 'a', 'b', 4, 5 ]

  注意:splice()方法始终会返回一个新数组,包含从原始数组中删除的项。

  8).indexOf(要查找的项,查找起点位置) 从前向后找; lastIndexOf(要查找的项,查找起点位置) 从后向前找;*不兼容IE8

var arr = [1,2,3,1,2,33,1,44];
var idx = arr.indexOf(1,1);
console.log(idx); // var aIdx = [];
var idx = 0;
while((idx = arr.indexOf(1, idx)) != -1){
aIdx.push(idx);
idx += 1;
}
console.log(aIdx); // [0, 3, 6]

  9)ES5中的迭代方法,共5个: *IE8及以下不兼容

  every(): 循环给定数组的每一项,如果所有项都满足函数内条件,则返回 true,否则返回 false。不影响原数组。

  most():  循环给定数组的每一项,如果至少有一项满足函数内条件,则返回 true,否则返回 false。不影响原数组。

  filter():  循环给定数组的每一项,返回所有满足函数内条件的数组项,组成一个新数组返回。不影响原数组。

  map():  循环给定数组的每一项,运行给定的函数,返回每次函数调用的结果组成新的数组并返回。不影响原数组。

  forEach():  循环给定数组的每一项,运行给定的函数对原数组项作处理。该方法没有返回值,并影响原数组。

var nums = [1,2,344,55,6,6,32];
var every = nums.every(function(item, index, array){
return item > 2;
});
console.log('every:', every); //every: false
var some = nums.some(function(item, index, array){
return item > 300;
});
console.log('some:', some); //some: true
var filter = nums.filter(function(item, index, array){
return item%2==0;
});
console.log('filter:', filter); //filter: [ 2, 344, 6, 6, 32 ]
var map = nums.map(function(item, index, array){
return item*2;
});
console.log('map:', map); //map: [ 2, 4, 688, 110, 12, 12, 64 ]
var forEach = nums.forEach(function(item, index, array){
if(item < 10){
array[index] = 10;
}
});
console.log('forEach:', nums); //forEach: [ 10, 10, 344, 55, 10, 10, 32 ]

高程三:Array的更多相关文章

  1. 高程三 DOM对象

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http ...

  2. Javascript学习总结三(Array对象的用法)

    javascript Array对象的常用API 1:concat concat() 方法用于连接两个或多个数组.该方法不会改变现有的数组,而仅仅会返回被连接数组的一个副本.举例:var a1 = [ ...

  3. JavaScript 高程三读书笔记;

    1. 在使用 <script> 嵌入 JavaScript 代码时,记住不要在代码中的任何地方出现 "</script>" 字符串. 例如,浏览器在加载下面 ...

  4. js 学习三 Array

    1.数组的长度 var sequence = [1, 1, 2, 3, 5, 8, 13]; sequence .length //7 2.字符串转换成数组 string.split() var my ...

  5. 高程三 BOM 读书笔记

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http ...

  6. 作为sort()方法的参数的比较函数(高程三第五章)

    <script> var nums = [0,1,5,10,15]; var nums2 = nums; nums.sort(); console.log(nums);//0,1,10,1 ...

  7. 高程(4):执行环境、作用域、上下文执行过程、垃圾收集、try...catch...

    高程三 4.2.4.3 一.执行环境 1.全局执行环境是最外层的执行环境. 2.每个函数都有自己的执行环境,执行函数时,函数环境就会被推入一个当前环境栈中,执行完毕,栈将其环境弹出,把控制器返回给之前 ...

  8. MongoDB之Array Object的特殊操作

    相比关系型数据库,Array[1,2,3,4,5]和Object{'name':'Wjs'}是MongoDB比较特殊的类型 db.Wjs.insert({"name":" ...

  9. MongoDB 之 Array Object 的特殊操作 MongoDB - 6

    相比关系型数据库, Array [1,2,3,4,5] 和 Object { 'name':'DragonFire' } 是MongoDB 比较特殊的类型了 特殊在哪里呢?在他们的操作上又有什么需要注 ...

随机推荐

  1. Nginx模块之http.md

    ngx_http_access_module ngx_http_access_module模块允许限制对某些客户端地址的访问. 访问也可以通过密码,子请求的结果或JWT来限制. 通过地址和密码的同时访 ...

  2. jsp基础

    1.1动态页面 动态页面的优势: 1.交互性:网页会根据用户的要求和选而动态改变和显示内容; 2.自动更新:无需改变页面代码,便会自动更新的页面内容; 3.随机性:当不同的时间,不同的人访问同一网址时 ...

  3. RedisUtil 工具类

    package com.test; import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool; import red ...

  4. insmod模块的几种常见错误

    1. 与内核版本不一致 嵌入式开发时,模块编译时需要制定内核的路径,内核的版本信息会加入到模块文件中,如果目标板上运行的内核与模块中包含的内核版本对不上,加载就会出错,报如下错误:  insmod i ...

  5. supervisor的安装与简单介绍

    1,介绍 Supervisor是一个进程管理工具,官方的说法 用途就是有一个进程需要每时每刻不断的跑,但是这个进程又有可能由于各种原因有可能中断.当进程中断的时候我希望能自动重新启动它,此时,我就需要 ...

  6. DataTable ajax分页+删除+查询+修改

    这个框架前前后后跳进了很多次坑,也算是本人比较愚笨吧做了很长的时间而积累的经验... dataTable用了很久,今天在此总结一下使用方法以及常用属性的解释. Html代码 : <div cla ...

  7. 五.Jenkins安装plugin

    http://blog.csdn.net/jmyue/article/details/9376237

  8. 使用Mysql Workbench 画E-R图

    MySQL Workbench 是一款专为MySQL设计的ER/数据库建模工具.你可以用MySQL Workbench设计和创建新的数据库图示,建立数据库文档,以及进行复杂的MySQL 迁移.这里介绍 ...

  9. bzoj1078【SCOI2008】斜堆

    题意: 斜堆(skew heap)是一种常用的数据结构.它也是二叉树,且满足与二叉堆相同的堆性质:每个非根结点的值都比它父亲大.因此在整棵斜堆中,根的值最小.但斜堆不必是平衡的,每个结点的左右儿子的大 ...

  10. [转载]El Capitan 中 SIP 介绍

    这两天大家纷纷将 OS X 系统升级到了 El Capitan,然后发现,一些注入的工具无法使用了,某些系统目录无法使用了,第三方未签名的 kext 无法加载了,问题一堆堆的.这是因为,Mac OS ...