数组 Array

== 1、建立数组==
* 通过变量赋值为[]来建立数组

var arr = []; // arr 是一个数组

* 需要注意数组的下标是从0开始中的

==2、获取数组长度==

* 通过length 属性来获得长度

var arr = [1,2];
console.log(arr.length);// =>2

==3、合并数组==

* 调用 concat 函数产生一个新的合并后的函数 :

var arr = [1,4,3,2];
var r = [5,6]
console.log(arr.concat(r)); //=>[1, 4, 3, 2, 5, 6]
console.log(arr.concat(8,9)); //=>[1, 4, 3, 2, 8, 9]

==4、转化为字符串==

var arr = [1,2];
console.log(arr.join('-'));//=>1-2

==5、取最后一个元素==

* 调用 pop, 移除数组中最后一个元素,并返回该元素

var arr = [1,2,3];
console.log(arr.pop());// => 3
console.log(arr)// =>[1,2]

==6、添加元素到数组尾部==

* 调用push, 将新元素添加到数组尾部,并返回数组新长度

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

==7、倒转数组元素顺序==

*调用reverse, 将元素位置颠倒

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

==8、取数组第一个元素==

* 调用shift, 移除数组中第一个元素,并返回该元素

var arr = [1,2,3];
console.log(arr.shift); // => 1
console.log(arr);// => [2,3]

==9、添加元素到数组头部==

* 调用unshift, 将新元素添加到数组头部,并返回数组新长度

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

==10、获取子数组==

* 调用slice , 获取数组指定范围了子数组

* 返回一个新的数组,包含从 start 到 end (不包括该元素)的 arrayObject 中的元素

* 请注意,该方法并不会修改数组,而是返回一个子数组。如果想删除数组中的一段元素,应该使用方法 Array.splice()。

var arr = [1,2,3,4,5,6,7];
console.log(arr.slice(2,4));// => [3,4]
console.log(arr);//=>[1,2,3,4,5,6,7]

==11、替换,删除,插入数组元素==

*  替换: 将数组的连续元素替换为另外一批元素(把任意多个连续的值替换成另一个或多个值)

*  删除:从指定位置删除任意长度的值

*  插入:从指定位置的前面插入任意多个新的值

var arr = [1,2,3,4,5,6,7];
console.log(arr.splice(1,2)); // =>[2,3] 删除
console.log(arr.splice(1,2,5,6));// => [2,3] 替换  从第1个下标开始的两个数为 5,6,并返回被替换的数组成的数组
console.log(arr);// =>[1,5,6,4,5,6,7]
console.log(arr.splice(1,0,9,0));// => []  插入 不删除项目返回的值为空,从第一个位置的前面添加了新的值,删除的长度为0
console.log(arr);// =>[1, 9, 0, 2, 3, 4, 5, 6, 7]

==12、排序==

* 调用 sort 对数组进行排序,默认为从小到大,也可以自定义排序规则

var arr = [1,4,3,2,5,6,7];
console.log(arr.sort(function(a,b){return a-b;}));// => [1,2,3,4,5,6,7]
console.log(arr.sort(function(a,b){return b-a;}));// => [7,6,5,4,3,2,1]

==13、循环==

* 调用 forEach 对数组进行循环

var arr = [1,4,3,2];
arr.forEach(function(i){
    console.log(i); // => 1,4,3,2
})

==14、索引==

* 调用 indexOf 正向查找某个值在数组中的索引位置

var arr = [1,4,3,2];
var index = arr.indexOf(3);
console.log(index);//=>2

==15、索引==

* 调用 lastIndexOf 反向查找某个值在数组中的索引位置, 与indexOf的方法不同在于开始查找的位置。

var arr = [1,4,3,2];
var index = arr.lastIndexOf(3);
console.log(index);//=>2

==16、循环==

*  调用 map对数组进行循环处理. 类似于forEach,不同的是提供了index 索引的值

var arr = [1,4,3,2];
arr.map(function(item,index){
    console.log(item);// =>1,4,3,2
    console.log(index);// =>0,1,2,3
})

==17、对数组中每一个元素执行回调函数==

* 对数组中的每个元素都执行一次指定的函数(callback),直到此函数返回 false,如果发现这个元素,every 将返回 false,如果回调函数对每个元素执行后都返回 true ,every 将返回 true。它只对数组中的非空元素执行指定的函数,没有赋值或者已经删除的元素将被忽略。

回调函数可以有三个参数:当前元素,当前元素的索引和当前的数组对象。console.log(arguments)

var arr = [1,4,3,2];
var flag = arr.every(function(a){
    return a > 4;
})
console.log(flag);// =>false
var flag2 = arr.every(function(a){
    return a > 0;
})
console.log(flag2);// => true
console.log(arr); // =>[1,4,3,2]

==18、对数组中每一个元素执行回调函数==

* 对数组中的每个元素都执行一次指定的函数(callback),直到此函数返回true,如果发现这个元素,some 将返回true,如果回调函数对每个元素执行后都返回 false ,some 将返回false。它只对数组中的非空元素执行指定的函数,没有赋值或者已经删除的元素将被忽略。

回调函数可以有三个参数:当前元素,当前元素的索引和当前的数组对象。console.log(arguments)

var arr = [1,4,3,2];
var flag = arr.some(function(a){
    return a > 3;
})
console.log(flag);// => true
var flag2 = arr.some(function(a){
    return a < 0;
})
console.log(flag2);// => false
console.log(arr); // =>[1,4,3,2]

==19、过滤数组==

* filter 不会改变原有数组,记住:只有在回调函数执行前传入的数组元素才有效,在回调函数开始执行后才添加的元素将被忽略,而在回调函数开始执行到最后一个元素这一期间,数组元素被删除或者被更改的,将以回调函数访问到该元素的时间为准,被删除的元素将被忽略。

var arr = [1,4,3,2];
var newarr = arr.filter(function(a){
    return a > 3;
})
console.log(arr); // =>[1,4,3,2]
console.log(newarr); //=> [4]

=====数组一些方法=====

==取出最小值,并alert出他的位置==

// 最小值, 最大值
var arr = [6,4,1,2];
//var a=[10,2,3,[5,6],[1,4,8]];
//var arr = a.join(',').split(',');
var min = Math.min.apply(null,arr);
console.log(min);//=>1
var max = Math.max.apply(null,arr);
console.log(max); //=>6   /10

// 取索引
var arr = [6,4,1,2];
var min = Math.min.apply(null,arr);
var index = arr.indexOf(min);
console.log(index);// =>2

var arr = [4,6,4,1,2];
var max = Math.max.apply(null,arr);
var index = arr.indexOf(max);
console.log(index);//=>1

// split 后的数组
var a=[2,3,[5,10,6],[1,4,8]];
var arr = a.join(',').split(',');
var max = Math.max.apply(null,arr);
var index = arr.indexOf(''+max); // split 之后数组变成字符串形式 需要以字符串形式查找
console.log(index); // => 3  
// jq 位置
var arr = [6,4,1,2];
var min = Math.min.apply(null,arr);
var index = $.inArray(min,arr)
console.log(index) 
// 取出 最小值, 并获取他的位置
var arr = [6,4,1,2];
var minArr = arr[0];
var n = 0;
for(var i=1,len=arr.length;i<len;i++){
        if(minArr>arr[i]){
            minArr = arr[i];
         n = i;
     }
 }
 console.log(minArr,n); // => 1, 2
// 取出最大值 ,并获取他的位置
var arr = [6,4,1,2];
var maxArr = arr[0];
var n = 0;
for(var i=1,len=arr.length;i<len;i++){
    if(maxArr<arr[i]){
        maxArr = arr[i];
        n = i;
    }
}
console.log(maxArr,n);// 6 , 0

==数组排序==

var arr = [6,4,1,2];
console.log(arr.sort(function(num1,num2){return num1-num2;})); //=>[1,2,4,6]
console.log(arr.sort(function(num1,num2){return num2-num1;})); //=>[6,4,2,1]
// 冒泡排序
var arr = [6,4,1,2];
for(var i=0,len=arr.length;i<len;i++){
    for(var j=0,l=arr.length;j<l-i;j++){
        toSort(j,j+1);
    }
}
function toSort(prev,next){
    var tmp = 0;
    if(arr[prev]>arr[next]){ // > 从小到大, < 从大到小
        tmp = arr[prev];
        arr[prev] = arr[next];
        arr[next] = tmp;
    }
}
console.log(arr);//=>[1,2,4,6]   [6,4,2,1]

==数组去重==

var arr = [6,4,1,2,4,2,6];
Array.prototype.fn = function(){
    var newArr = [];
    var json = {};
    for(var i=0,len=this.length;i<len;i++){
        if(!json[this[i]]){
            newArr.push(this[i]);
            json[this[i]] = true;
        }
    }
        return newArr;
}
var nArr = arr.fn();
console.log(nArr);

var arr = [6,4,1,2,4,2,6];
var newArr = [];
var json = {};
for(var i=0,len=arr.length;i<len;i++){
    if(!json[arr[i]]){
        newArr.push(arr[i]);
        json[arr[i]] = 1;
    }
}
console.log(newArr);
var arr = [6,4,1,2,4,2,6];
Array.prototype.fn = function(){
    var newArr = [];
    for(var i=0,len=this.length;i<len;i++){
        if(newArr.indexOf(this[i])==-1){
            newArr.push(this[i]);
        }
    }
    return newArr;
}
var nArr = arr.fn();
console.log(nArr);
var arr = [6,4,1,2,4,2,6];
            Array.prototype.fn = function(){
                var _this = this;
                var tmpArr = [];
                for(var i=0,len=this.length;i<len;i++){
                    _this.toCom(this[i],tmpArr);
                }
                return tmpArr;
            }
            Array.prototype.toCom = function(arr,tmpArr) {
                var isT = true;
                for(var i=0,len=tmpArr.length;i<len;i++){
                    if(arr == tmpArr[i]){
                        isT = false;
                        break;
                    }
                }
                if(isT){
                    tmpArr.push(arr);
                }
            };
            var nArr = arr.fn();
            console.log(nArr);
function fn(){
                var arr = [6,4,1,2,4,2,6];
                var tmpArr = [];
                for(var i=0,len=arr.length;i<len;i++){
                    toCom(arr[i],tmpArr);
                }
                return tmpArr;
            }
            function toCom(arr,tmpArr) {
                var isT = true;
                for(var i=0,len=tmpArr.length;i<len;i++){
                    if(arr == tmpArr[i]){
                        isT = false;
                        break;
                    }
                }
                if(isT){
                    tmpArr.push(arr);
                }
            };
            console.log(fn());

javascript——马步之Array篇的更多相关文章

  1. javascript 方法总结(Array篇)

    1.toString:返回以数组种的每个值得字符串形式拼接而成得一个以逗号分割得字符串 toStringArr = [1, 2, 3, 4, 5, 6] console.log(toStringArr ...

  2. [WebKit内核] JavaScript引擎深度解析--基础篇(一)字节码生成及语法树的构建详情分析

    [WebKit内核] JavaScript引擎深度解析--基础篇(一)字节码生成及语法树的构建详情分析 标签: webkit内核JavaScriptCore 2015-03-26 23:26 2285 ...

  3. javascript面向对象系列第三篇——实现继承的3种形式

    × 目录 [1]原型继承 [2]伪类继承 [3]组合继承 前面的话 学习如何创建对象是理解面向对象编程的第一步,第二步是理解继承.本文是javascript面向对象系列第三篇——实现继承的3种形式 [ ...

  4. 深入理解javascript函数系列第三篇——属性和方法

    × 目录 [1]属性 [2]方法 前面的话 函数是javascript中的特殊的对象,可以拥有属性和方法,就像普通的对象拥有属性和方法一样.甚至可以用Function()构造函数来创建新的函数对象.本 ...

  5. JavaScript 学习笔记之最终篇

      JavaScript 的学习算是最后一篇了...把JS基础已经核心的部分彻底的进行了学习... 唯一的缺陷就是自己在运用上并不是特别的熟练...今天是JS的最后一章内容了..也是JS 中最常用的内 ...

  6. 深入理解javascript函数系列第三篇

    前面的话 函数是javascript中特殊的对象,可以拥有属性和方法,就像普通的对象拥有属性和方法一样.甚至可以用Function()构造函数来创建新的函数对象.本文是深入理解javascript函数 ...

  7. 【JavaScript数据结构系列】00-开篇

    [JavaScript数据结构系列]00-开篇 码路工人 CoderMonkey 转载请注明作者与出处 ## 0. 开篇[JavaScript数据结构与算法] 大的计划,写以下两部分: 1[JavaS ...

  8. 深入理解javascript作用域系列第四篇——块作用域

    × 目录 [1]let [2]const [3]try 前面的话 尽管函数作用域是最常见的作用域单元,也是现行大多数javascript最普遍的设计方法,但其他类型的作用域单元也是存在的,并且通过使用 ...

  9. 深入理解javascript作用域系列第三篇——声明提升(hoisting)

    × 目录 [1]变量 [2]函数 [3]优先 前面的话 一般认为,javascript代码在执行时是由上到下一行一行执行的.但实际上这并不完全正确,主要是因为声明提升的存在.本文是深入理解javasc ...

随机推荐

  1. IO-同步,异步,阻塞,非阻塞,阅读摘要

    http://www.cnblogs.com/Fly-Wind/p/io.html http://blog.csdn.net/historyasamirror/article/details/5778 ...

  2. nodejs API笔记

    一.URL 涉及到的方法 1.parse():解析地址 2.format():生成地址 3.resolve(from,to):组合成地址 举例说明: url.parse('http://baidu.c ...

  3. AIM Tech Round 3

    题目链接:(做出几道说几道^_^) A.Juicer B.Checkpoints C.Letters Cyclic Shift 思路: A题每次加上橘子的体积,超过就清零,计数器加1 B题比较 (lo ...

  4. Spark RDD概念学习系列之Spark的数据存储(十二)

    Spark数据存储的核心是弹性分布式数据集(RDD). RDD可以被抽象地理解为一个大的数组(Array),但是这个数组是分布在集群上的. 逻辑上RDD的每个分区叫一个Partition. 在Spar ...

  5. homework-05 GoldNumberServer

    作业要求 这次作业要求实现一个黄金数游戏服务器,游戏流程如下,每个client向服务器提交一个有理数,服务器接收到所有客户端的提交后计算这些数字的平均数,再将其乘以黄金分割得到一个GoldNumber ...

  6. PC问题-(仅供备用)取消磁盘的自动扫描

    问题现象:有一次整个单位停电了,之后再开机,每次电脑都自检.现在不想让电脑自检了. 问题原因:可能是因为停电,造成了系统文件的破坏. 问题处理:禁用电脑自检功能(注册表方法). Windows Reg ...

  7. Spring EL ternary operator (if-then-else) example

    Spring EL supports ternary operator , perform "if then else" conditional checking. For exa ...

  8. [iOS基础控件 - 6.9] 聊天界面Demo

    A.需求 做出一个类似于QQ.微信的聊天界面 1.每个cell包含发送时间.发送人(头像).发送信息 2.使用对方头像放在左边,我方头像在右边 3.对方信息使用白色背景对话框,我方信息使用蓝色背景对话 ...

  9. Light oj 1214-Large Division (同余定理)

    题目链接:http://lightoj.com/volume_showproblem.php?problem=1214 题意很好懂,同余定理的运用,要是A数被B数整除,那么A%B等于0.而A很大,那我 ...

  10. CodeForces 705B Spider Man (水题)

    题意:给定 n 个数,表示不同的环,然后把环拆成全是1,每次只能拆成两个,问你有多少次. 析:也不难,反正都要变成1,所以把所有的数都减1,再求和即可. 代码如下: #pragma comment(l ...