JavaScript我学之七数组
本文是金旭亮老师网易云课堂的课程笔记,记录下来,以供备忘。
数组是“多态数组" ,啥都可以放
//JavaScript中的多态数组
var arr = ["one", 2, true,
function (a, b) { return a + b; },
[1,2,3]
];
数组是一个对象,拥有自己的属性与方法
//数组是一个对象
console.info(arr);
console.info(arr.length);
访问与写入
访问
//数组元素通过下标访问
console.info(arr[0]); //one
//调用放在数组中的函数
console.info(arr[3](100, 200));//
//访问放在数组中数组
console.info(arr[arr.length - 1].length);//
//当读取没有内容的位置时,返回undefined
console.info(arr[100]);//undefined
写入:
var arr2 = [];
//向空数组赋值,将导致数组中添加一个元素
arr2[0] = "Hello";
//读取新加入的元素
console.info(arr2[0].toUpperCase());
//跳着赋值,将导致数组自动地增长
arr2[3] = 3;
console.info(arr2.length);//
console.info(arr2);//["Hello", 3: 3]
//中间的值为undefined
console.info(arr2[1]); //undefined
在尾部追加:
//自动在尾部追加元素
var arr3 = [];
for (var i = 0; i < 5; i++) {
arr3[arr3.length] = i;
}
//数组内容为:[0, 1, 2, 3, 4]
console.info(arr3);
数组常用方法:
concat 直接连接两个数组的元素。
var left = [1, 2], right = [3, 4];
console.info(left.concat(right)); //[1,2,3,4]
join 数组中每个元素通过分隔符相连.
var words = ["锤子", "剪刀", "布"];
var result = words.join('<-->');
//锤子<-->剪刀<-->布
console.info(result);
数组当堆栈:
var m_arr = ['a', 'b', 'c'];
m_arr.push('d');
console.info(m_arr); //["a","b","c","d"]
m_arr.pop();
console.info(m_arr); //["a","b","c"]
在开头操作数组元素:
unshift 开头插入
var arr = ["a", "b", "c"];
arr.unshift("99");
console.info(arr); //["99", "a", "b", "c"]
var shifted = arr.shift();
console.info(shift); //
console.info(arr); //["a", "b", "c"]
截取:
var bigArr = ["a", "b", "c", "d", "e", "f"];
var subArr = bigArr.slice(1, 4);
console.info(subArr); //"b","c","d"
删除元素:
splice 从第n个索引值开始删除m个
var arr = ["a", "b", "c", "d", "e", "f"];
arr.splice(2, 3); //索引值第2个开始删除3个
console.info(arr); // a, b, f
delete 虽删除但下标犹在.
var arr = ["a", "b", "c", "d", "e", "f"];
delete arr[2];
console.info(arr); //["a", "b", 3: "d", 4: "e", 5: "f"]
console.info(arr[2]); //undefined
当splice有多于2个参数时,就变成删除后再插入元素
var arr = ["a", "b", "c", "d", "e", "f"];
arr.splice(2, 3,"one","two"); //索引值第2个开始删除3个后再插入 one , two
console.info(arr); // a,b,one,two,f
数组排序:
排序与反转:
var data = [];
for (i=0 ; i<=6; i++) {
data[data.length] = Math.floor(Math.random() * 100);
}
console.info(data.sort()); //升序
console.info(data.reverse()); //反转
对象数组也排序:
- 自定义排序的关键在于设计好排序比较函数。
- 排序是在原数组上进行的.
//定义一个Person构造函数
function Person(name, age) {
this.name = name;
this.age = age;
};
//定义一个函数,用于输出Person集合中的数据
function printPeople(arr) {
for (var i = 0; i < arr.length; i++) {
console.info(arr[i].name + "有" + arr[i].age + "岁");
}
};
//使用forEach方法,以回调方式遍历处理数组中的元素
function printPeople2(arr) {
//forEach回调函数参数说明:
//value:代表数组中的单个元素
//index:代表数组中此元素对应的索引
//traversedObject:引用被遍历的数组
arr.forEach(function (value, index, traversedObject) {
console.info(value.name + "有" + value.age + "岁");
});
};
//生成测试数据
var people = [];
for (var i = 1; i < 5; i++) {
var age = Math.floor(Math.random() * 100);
people[people.length] = new Person('用户' + i, age);
}
console.info("原始数组:");
printPeople(people);
//自定义排序
//比较函数具有两个参数 a 和 b,其返回值如下:
//若 a 小于 b,在排序后的数组中 a 应该出现在 b 之前,则返回一个小于 0 的值。
//若 a 等于 b,则返回 0。a,b视为相等
//若 a 大于 b,则返回一个大于 0 的值。b应该排在a的后面
people.sort(function (p1, p2) {
if (p1.age > p2.age) return 1;
if (p1.age < p2.age) return -1;
return 0;
});
console.info("排序后的数组:");
printPeople2(people);
JavaScript我学之七数组的更多相关文章
- JavaScript jQuery 中定义数组与操作及jquery数组操作
首先给大家介绍javascript jquery中定义数组与操作的相关知识,具体内容如下所示: 1.认识数组 数组就是某类数据的集合,数据类型可以是整型.字符串.甚至是对象Javascript不支持多 ...
- JavaScript中常见的数组操作函数及用法
JavaScript中常见的数组操作函数及用法 昨天写了个帖子,汇总了下常见的JavaScript中的字符串操作函数及用法.今天正好有时间,也去把JavaScript中常见的数组操作函数及用法总结一下 ...
- JavaScript面向对象程序设计:数组
或许你会奇怪,面向对象的程序设计为什么从数组开始讲起?这是因为……其间的种种关系吧……嘿嘿,这里先卖个关子,先来看看我们熟悉的数组在JavaScript里面是什么样子的. 1. 创建数组 在J ...
- javascript中的稀疏数组(sparse array)和密集数组
学习underscore.js数组相关API的时候.遇到了sparse array这个东西,曾经没有接触过. 这里学习下什么是稀疏数组和密集数组. 什么是密集数组呢?在java和C语言中,数组是一片连 ...
- Javascript Jquery 中的数组定义与操作_子木玲_新浪博客
body{ font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI& ...
- javaScript(8)---对象和数组
javaScript(8)---对象和数组 学习要点: 1.Object类型 2.Array类型 3.对象中的方法 什么是对象,其实就是一种类型,即引用类型.而对象的值就是引用类型的实例.在ECMAS ...
- 同事问如何判断同花顺,我用javascript的二维数组写了个简易demo
有个前同事在群里问如何判断是否为同花顺我用javascript的二维数组写了个简易demo. <!DOCTYPE html> <html> <body> <s ...
- JSON.stringify()方法是将一个javascript值(对象或者数组)转换成为一个JSON字符串;JSON.parse()解析JSON字符串,构造由字符串描述的javascript值或对象
JSON.stringify()方法是将一个javascript值(对象或者数组)转换成为一个JSON字符串:JSON.parse()解析JSON字符串,构造由字符串描述的javascript值或对象
- javaScript遍历对象、数组总结(转载)
javaScript遍历对象.数组总结 转载来源 https://www.cnblogs.com/chenyablog/p/6477866.html 在日常工作过程中,我们对于javaScript遍 ...
随机推荐
- 关于oracle sql语句查询时表名和字段名要加双引号的问题详解
转自:http://www.2cto.com/database/201504/387184.html 作为oracle的初学者相信大家一定会遇到这个问题,如图: 明明就是navicat可视化创建了表, ...
- react学习目录
前面的话 React是如今热门的两大前端框架之一,它设计思路独特,性能卓越,逻辑简单,受到了大量开发者的喜爱.Vue的基本思路是基于HTML模板的扩展,而React的基本思路是基于JS语言的扩展.由于 ...
- P4783 【模板】矩阵求逆
原题链接 https://www.luogu.org/problemnew/show/P4783 一道模板题,更重要的省选难度..... 题目要求的是一个n*n的逆矩阵,还要对大数取膜. 普通高中生: ...
- POJChallengeRound2 Tree 【数学期望】
题目分析: 我们令$G(x)$表示前$x$个点的平均深度,$F(x)$表示第$x$个点的期望深度. 有$F(x) = G(x-1)+1$,$G(x) = G(x-1)+\frac{1}{x}$ 所以答 ...
- 修改帝国cms栏目后,如何更新
修改栏目后,要依次做如下更新: 1. 2. 3. 如果只是修改了栏目里的属性,只需要做第三步就行了
- centos7修改网卡名称为eth0
原文链接:https://www.cnblogs.com/freeblogs/p/7881597.html 在安装系统的时候配置: 修改内核选项:net.ifnames=0 biosdevname=0 ...
- (转)Spring事务管理详解
背景:之前一直在学习数据库中的相关事务,而忽略了spring中的事务配置,在阿里面试时候基本是惨败,这里做一个总结. 可能是最漂亮的Spring事务管理详解 https://github.com/Sn ...
- CF1059D Nature Reserve
原题链接 网络不好的可以到洛谷上去QwQ 题目大意 有N个点,求与y=0相切的,包含这N个点的最小圆的半径 输入输出样例 输入: 2 0 1 1 1 输出 0.625 感觉最多是蓝题难度? 首先无解的 ...
- Numpy 系列(九)- 结构化数组
简介 之前我们操作Numpy的数组时,都是通过索引来操作的.针对二维数组,使用索引可以完成对行.列的操作.但是这是非常不直观的.可以把二维数组想象成一个excel表格,如果表格没有列名,操作起来会 ...
- JavaScript Date日期对象以及日期格式化方法
前言 Date对象是javascript语言中内置的数据类型,用于提供日期和时间的操作接口.Date对象是在早期java中的java.util.Date类基础上创建的,为此,Date类型使用自UTC1 ...