JavaScript数据结构-1.数组
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<script>
//数组浅复制:指向的是同一个对象,对象变化时,他们都变化。
var numbers = [1,2,3];
var num = numbers;
console.log(num);
console.log(numbers);
numbers[1] = 4;
console.log(num[1]); //数组深复制:把数组中的每个元素都复制到新数组中
function Copy(arr1,arr2){
for(var i=0;i<arr1.length;i++){
arr2[i]=arr1[i];
}
return arr2;
} //数组几个可变方法: unshift() 添加元素到数组开头 push() 添加元素到数组尾 pop()删除最后一个元素 shift() 删除数组第一个元素 var arr = [1,2,3,4,5];
arr.unshift(6);
console.log("unshift",arr);
var arr = [1,2,3,4,5];
arr.shift();
console.log("shift",arr);
var arr = [1,2,3,4,5];
arr.push(6);
console.log("push",arr); var arr = [1,2,3,4,5];
arr.pop();
console.log("pop",arr); //数组排序 sort() 和 sort(function) ,reverse();
function compare(num1,num2){
return num1-num2;
}
var arr = [1,3,100,6,50];
// arr.sort();//这个排序默认以字符串的形式排列 所以数字有误差 可以加个比较函数 实现数字排序。
arr.sort(compare);
console.log("sortarr",arr); arr .reverse();
console.log(arr,"reverse"); //返回索引 : indexOf() 和 lastIndexOf()
var arr = [1,2,2,3];
console.log(arr.indexOf(2));
console.log(arr.indexOf(4)); // 找不到 返回-1
console.log(arr.lastIndexOf(2)); // 返回数组中跟参数相同的所有元素中的最后一个索引。 //数组字符串表示 join() 和 toString()方法
var arr = ['zhangsan','lisi','zhaowu','wangliu'];
console.log(arr.join());
console.log(arr.toString()); //返回的结果是一样的,逗号分隔的字符串. //数组生成数组 :concat() splice()
var arr1 = ['hello','javascript'],
arr2 = ['name','class'];
console.log(arr1.concat(arr2)); var arr = ['hello','this',"is",'splice'];
console.log(arr.splice(1,3));
console.log(arr); //切割完 数组就变成剩下的元素组成的数组 //从数组中间位置添加 删除元素 :splice(a,b,value) a :起始索引 b 要截取(删除)的元素个数 value,要添加的元素,可以是多个,依次逗号隔开。
var arr= [1,2,3,100,200,4,5];
arr.splice(3,2);
console.log(arr); //完成删除 var arr = [1,2,3,4,5];
arr.splice(3,0,100,200); //插入的值依次逗号隔开
console.log(arr); //迭代器方法
//不生成新数组的: forEach(function) 接受一个函数,对每个元素进行迭代,
// every(function) 返回一个布尔值,方法作用在每个元素上都返回true,every(function) 才返回true
// some(function) 与every(function ) 类似,但只要有一个返回true,some就返回true。
// reduce(function) 迭代累加, 也可以连接成字符串, 还可以用 reduceRight(function)方法进行反转 //forEach(function)
var arr = [1,2,3,4,5,6,7,8,9];
function print(num){
console.log(num,num*num);
}
arr.forEach(print); //every(function),some(function)
var arr = [4,5,6,7,8,9];
var bool = arr.some(function(num){
// var bool = arr.every(function(num){
console.log(num>5);
return num>5
});
console.log(bool); //reduce(function)
var arr = [1,2,3,4];
function add(num1,num2){
return num1 + num2;
}
console.log(arr.reduce(add)); //10 //生成新数组迭代方法:map(function), filter(function)
//map
var arr = ["hello","javascript","function"];
function first(value){
return value[0];
}
console.log(arr.map(first).join('')); //filter:参数函数需要返回布尔值,结果是满足条件的所有元素列表。 相当于过滤器。也可以用来过滤字符串数组。
var arr = [1,2,3,4,5,6,7,8];
var res = arr.filter(function(num){
return num >5
})
console.log("res",res); //6,7,8 //获取数组所有key值
var arr=new Array();
arr["name"] = "张三";
arr["age"] = "20"; console.log(Object.keys(arr));
</script>
</body>
</html>
JavaScript数据结构-1.数组的更多相关文章
- 翻阅《数据结构与算法javascript描述》--数组篇
导读: 这篇文章比较长,介绍了数组常见的操作方法以及一些注意事项,最后还有几道经典的练习题(面试题). 数组的定义: JavaScript 中的数组是一种特殊的对象,用来表示偏移量的索引是该对象的属性 ...
- 为什么我要放弃javaScript数据结构与算法(第二章)—— 数组
第二章 数组 几乎所有的编程语言都原生支持数组类型,因为数组是最简单的内存数据结构.JavaScript里也有数组类型,虽然它的第一个版本并没有支持数组.本章将深入学习数组数据结构和它的能力. 为什么 ...
- JavaScript数据结构与算法-数组练习
一. 创建一个记录学生成绩的对象,提供一个添加成绩的方法,以及一个显示学生平均成绩的方法. // 创建一个记录学生成绩的对象 const Students = function Students () ...
- 重读《学习JavaScript数据结构与算法-第三版》- 第3章 数组(一)
定场诗 大将生来胆气豪,腰横秋水雁翎刀. 风吹鼍鼓山河动,电闪旌旗日月高. 天上麒麟原有种,穴中蝼蚁岂能逃. 太平待诏归来日,朕与先生解战袍. 此处应该有掌声... 前言 读<学习JavaScr ...
- JavaScript 数据结构与算法之美 - 线性表(数组、栈、队列、链表)
前言 基础知识就像是一座大楼的地基,它决定了我们的技术高度. 我们应该多掌握一些可移值的技术或者再过十几年应该都不会过时的技术,数据结构与算法就是其中之一. 栈.队列.链表.堆 是数据结构与算法中的基 ...
- JavaScript 数据结构与算法1(数组与栈)
学习数据结构的 git 代码地址: https://gitee.com/zhangning187/js-data-structure-study 1.数组 几乎所有的语言都原生支持数组类型,因为数组是 ...
- JavaScript数据结构——数组
参考书籍:<学习JavaScript数据结构与算法>
- 【从0到1学javascript】javascript数据结构----数组
javascript中对数组的定义 数组是一种特殊的对象,用来表示偏移量的索引是该对象的属性,索引可以是整数.这些数字索引在内部被转换成字符串类型.这是因为javascript对象中的属性名必须是字符 ...
- 学习javascript数据结构(三)——集合
前言 总括: 本文讲解了数据结构中的[集合]概念,并使用javascript实现了集合. 原文博客地址:学习javascript数据结构(三)--集合 知乎专栏&&简书专题:前端进击者 ...
随机推荐
- Oracle EBS不能正常启动的解决方案 > Jinitiator 乱码
问题1:使用IE浏览器(IE6 IE7 IE8)可以登录EBS,但在打开EBS的WIN Form界面里,IE自动关闭或报错,或是卡住不动 原因1: oracle EBS自带安装的JInitiator ...
- devexpress停靠菜单
dxDockSite1.Width := 27; dxDockPanel1.DockTo(dxDockSite1, dtLeft, 0); dxDockPanel2.DockTo(dxDockPane ...
- vmware之VMware Remote Console (VMRC) SDK(三)
前两节我们介绍了vmrc sdk的基本用法.在前面的demo中,有一个关键的问题是,我们现在所作的工作都是基于局域网的,作为应用层面上,主机不会直接暴露给用户,而是通过一系列的web service服 ...
- 深入CSS属性(九):z-index
如果你不是一名csser新手,想必你对z-index的用法应该有个大致的了解了吧,z-index可以控制定位元素在垂直于显示屏方向(Z 轴)上的堆叠顺序,本文不去讲述基本的API如何使用,而是去更深入 ...
- Buffer Pool--锁定内存页
锁定内存页在数据库中的优点和缺点: SQL Server 使用VirtualAlloc来分配内存,无内存压力时,SQL Server会尽可能地申请内存来缓存数据,当内存出现压力时,会出现缓存数据频繁地 ...
- 【node错误】/usr/bin/env: node: No such file or directory
背景 安装了node后,执行npm run xxx的命令的时候,报错,提示如下: /usr/bin/env: node: No such file or directory 步骤 1. 什么玩意,执行 ...
- Visual Studio效率神器——超级扩展ReSharper安装和破解
Visual Studio效率神器--超级扩展ReSharper安装和破解 ReSharper的使用方法网络上有文章Resharper安装和破解极其简单,2分钟就搞定了.安装ReSharper官方 ...
- NETCore 同步AD域组织和用户
BitAdminCore为没有自主开发框架的小团队,提供快速项目搭建及开发能力. 框架演示:http://bit.bitdao.cn 框架源码:https://github.com/chenyinxi ...
- WPF 触摸屏多点触控图像的缩放旋转和移动
<dxc:DXWindow xmlns:dxe="http://schemas.devexpress.com/winfx/2008/xaml/editors" xmlns:d ...
- CSS文字大小单位PX、EM的区别
◆px像素(Pixel)是相对长度单位,像素px是相对于显示器屏幕分辨率而言的.(引自CSS2.0手册)◆em是相对长度单位,相对于当前对象内文本的字体尺寸.如当前对行内文本的字体尺寸未被人为设置,则 ...