1. 创建数组

方式1. new关键字

var arr = new Array(1, 2, 3);

方式2. 使用字面量创建数组对象

var arr = [1, 2, 3];

2. 检测一个对象是否是数组

  1. instanceof(运算符),[] instanceof Array
  2. Array.isArray(),HTML5方法,有兼容性问题

3. 数组常用方法

具体查MDN

// 1 栈操作(先进后出)
push()
pop() //取出数组中的最后一项,修改length属性
// 2 队列操作(先进先出)
push()
shift() //取出数组中的第一个元素,修改length属性
unshift() //在数组最前面插入项,返回数组的长度
// 3 排序方法
reverse() //翻转数组
sort(); //即使是数组sort也是根据字符,从小到大排序
// 带参数的sort是如何实现的?
// 4 操作方法
concat() //把参数拼接到当前数组
slice() //从当前数组中截取一个新的数组,不影响原来的数组,参数start从0开始,end从1开始
splice() //删除或替换当前数组的某些项目,参数start, deleteCount, options(要替换的项目)
// 5 位置方法
indexOf()、lastIndexOf() //如果没找到返回-1
// 6 迭代方法 不会修改原数组(可选)
every()、filter()、forEach()、map()、some()
// 7 方法将数组的所有元素连接到一个字符串中。
join()

4. 实现array.join方法

input:一个数组,例如var arr = [1, 2, 3, 4, 5]

output:1|2|3|4|5

Version 1:字符串拼接法

function myJoin(array, seperator) {
seperator = seperator || ',';
array = array || [];
if (array.length == 0){
return '';
}
var str = array[0];
for (var i = 1; i < array.length; i++) {
str += seperator + array[i];
}
return str;
}
var array = [6, 3, 5, 6, 7, 8, 0];
console.log(myJoin(array, '-')); console.log(array.join('-'))

5. 实现array.reverse方法

将一个字符串数组的元素的顺序进行反转

input:["a", "b", "c", "d"]

output:[ "d","c","b","a"]

Version 1:第i个元素和第length-i-1个元素交换,for循环中i < 数组的一半即可

    function myReverse(arr) {
// 数组为空即返回空数组
if (!arr || arr.length === 0) {
return [];
} // 遍历到数组长度的一般即可
for (var i = 0; i < arr.length / 2; i++) {
var tmp = arr[i];
arr[i] = arr[arr.length - i - 1];
arr[arr.length - i -1] = tmp;
}
return arr;
} var array = ['a', 'b', 'c', 'd'];
console.log(array);
console.log(myReverse(array));
console.log(array.reverse());

6. 清空数组

// 方式1 推荐
arr = [];
// 方式2
arr.length = 0;
// 方式3
arr.splice(0, arr.length);

案例1. 工资的数组[1500, 1200, 2000, 2100, 1800],把工资超过2000的删除

方式1:使用辅助数组,遍历和if过滤。(缺点:不是原地操作)

var array =  [1500,1200,2000,2100,1800];
var tmpArray = [];
for (var i = 0; i < array.length; i++) {
if(array[i] < 2000) {
tmpArray.push(array[i]);
}
}
console.log(tmpArray);

方式2:使用filter高阶函数(函数式编程)

var array =  [1500, 1200, 2000, 2100, 1800];
array = array.filter(function (item, index) {
if (item < 2000) {
return true;
}
return false;
});
console.log(array);

案例2. ["c", "a", "z", "a", "x", "a"]找到数组中每一个a出现的位置

方式1. 用到array.indexOf方法,也是缺点

var array =  ['c', 'a', 'z', 'a', 'x', 'a'];
do {
var index = array.indexOf('a',index + 1);
if (index != -1){
console.log(index);
}
} while (index > 0);

案例3. 去掉一个数组中重复的元素

方式1. 使用k-v容器,k保存原数组中的元素,v保存原数组中元素出现的次数;不管次数多少次,都保存在新的数组一次。

        // 新建数组
var arr = ['c', 'a', 'z', 'a', 'x', 'a']; // 清除重复元素
function clear(array) {
// 1. 用key-value的容器保存元素出现的次数
var tmpDict = [];
// var tmpDict = {};
for (var i = 0; i < array.length; i++) {
var item = array[i];
if (tmpDict[item]) {
tmpDict[item]++;
} else {
tmpDict[item] = 1;
}
} // 2. 保存在一个新的数组中。容器中出现次数大于1和等于1的元素都只添加一次到新的数组中。
var tmpArray = [];
for (var key in tmpDict) {
if (tmpDict[key] == 1) {
tmpArray.push(key);
} else {
// 如果新的数组中没有原本数组的元素,则添加
if (tmpArray.indexOf(key) == -1) {
tmpArray.push(key);
}
}
}
return tmpArray;
}
// 测试
console.log(clear(arr));

JavaScript - Array对象,数组的更多相关文章

  1. JavaScript Array(数组)对象

    一,定义数组 数组对象用来在单独的变量名中存储一系列的值. 创建 Array 对象的语法: new Array(); new Array(size); new Array(element0, elem ...

  2. JavaScript Array 对象

    JavaScript Array 对象 Array 对象 Array 对象用于在变量中存储多个值: var cars = ["Saab", "Volvo", & ...

  3. 浏览器端-W3School-浏览器端:JavaScript Array 对象

    ylbtech-浏览器端-W3School-浏览器端:JavaScript Array 对象 1.返回顶部 1. Array 对象 Array 对象用于在单个的变量中存储多个值. 创建 Array 对 ...

  4. javascript 克隆对象/数组的方法 clone()

      1 11 javascript 克隆对象/数组的方法 clone() 1 demo: code: 1 var Obj; 2 let clone = (Obj) => { 3 var buf; ...

  5. JavaScript Array对象

    介绍Js的Array 数组对象. 目录 1. 介绍:介绍 Array 数组对象的说明.定义方式以及属性. 2. 实例方法:介绍 Array 对象的实例方法:concat.every.filter.fo ...

  6. JavaScript Number 对象 Javascript Array对象 Location 对象方法 String对象方法

    JavaScript Number 对象 Number 对象属性 属性 描述 constructor 返回对创建此对象的 Number 函数的引用. MAX_VALUE 可表示的最大的数. MIN_V ...

  7. JavaScript Array 对象方法 以及 如何区分javascript中的toString()、toLocaleString()、valueOf()方法

    1.concat() 2.join() 3.pop() 4.push() 5.reverse() 6.shift() 7.unshift() 8.slice() 9.sort() 10.splice( ...

  8. Javascript Array对象 sort()方法,记忆方法,方法扩展

    相信 有很多 同仁们,尤其是初学者,在记住 Array对象 sort() 方法的排序,规则上,有点困难: 其实sort()方法已经在实际工作中用到很多遍了,可当我仔细推敲,这个sort()方法,什么时 ...

  9. JavaScript Array 对象(length)方法 (contact、push,pop,join,map、reverse、slice、sort)

    一.Array对象属性 1.length 设置或返回数组中元素的数目. 数组的 length 属性总是比数组中定义的最后一个元素的下标大 1.对于那些具有连续元素,而且以元素 0 开始的常规数组而言, ...

  10. JavaScript Array对象 知识点总结

    1 isArray方法 该方法是Array对象的静态方法,用来判断一个值是否为数组,它可以弥补typeof运算符的不足. 用法是Array.isArray(array实例) 通用的判断对象数据类型的方 ...

随机推荐

  1. tarsgo初探

    参考:https://mp.weixin.qq.com/s/aO8ybUiu5htqcoGAwxwc5Q?utm_source=tuicool&utm_medium=referral 1.Go ...

  2. 201771010135-杨蓉庆 实验一 软件工程准备—用Markdown写构建之法

    项目 内容 软件工程 https://www.cnblogs.com/nwnu-daizh   博客园  https://www.cnblogs.com/nwnu-daizh/p/12369881.h ...

  3. 吴裕雄 python 机器学习——集成学习AdaBoost算法回归模型

    import numpy as np import matplotlib.pyplot as plt from sklearn import datasets,ensemble from sklear ...

  4. 吴裕雄 python 机器学习——集成学习AdaBoost算法分类模型

    import numpy as np import matplotlib.pyplot as plt from sklearn import datasets,ensemble from sklear ...

  5. windows CMakeLists.txt

    在windows下写好CMakeLists.txt,然后配合cmake-gui使用. CMakeLists.txt写的不够好,后期优化,以下仅供参考: # set(OpenCV_DIR D:/Prog ...

  6. Ansible - 模块 - shell

    概述 ansible 的 shell 模块 准别 ansible 控制节点 ansible 2.8.1 远程节点 OS CentOS 7.5 无密码登录 已经打通 1. 模块 概述 ansible 功 ...

  7. zabbix-server报错:No route to host

    前戏: 我在VM虚拟机中创建了2个liunx系统(rhel7和cent7),一个用作zabbix服务端,另一个用作zabbix客户端.但是用服务端监控客户端时图标是红色的监控不了,报错信息为:Get ...

  8. 【Python redis】

    目录 基本用法 连接池 基本命令 String Hash List set "下载:pip install redis @ *** 基本用法 redis库提供两个类,Redis和Strict ...

  9. 项目中报错:Unsupported major.minor version

    在开发中或多或少都会遇到如下报错: java.lang.UnsupportedClassVersionError: com/xie/IntegerTest : Unsupported major.mi ...

  10. queue的使用-Hdu 1702

    ACboy needs your help again! Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K ( ...