JavaScript操作数组

数组被描述为一个存储元素的线性集合,元素可以通过索引来任意存取。

几乎所有的编程语言都有类似的数据结构,但是Javascript中的数组却略有不同。

Javascript中的数组是一种特殊的对象,所以在数组的操作效率上不如其他语言中的数组高。

也因为数组再JavaScript中被当做对象,所以它有很多属性和方法可以再编程时使用。

下面就简单介绍一下JavaScript中的数组的使用方法。

注:以下所有的JavaScript代码均在 jsshell 中运行,一些方法可能在其他环境中(如浏览器和sublime text)中不能运行。

【jsshell的使用】

/* Js-shell的使用
下载:http://mzl.la/MKOuFY
根据系统和语言选择不同版本进行下载,下载完直接打开js-shell终端进行使用
*/

/**************** 在Js-shell中常用的一些Js方法 ***************/
print();  	//打印页面/在终端直接打印
putstr(""); //显示提示信息
var num = readline();  //接受用户输入的信息

【 JavaScript中数组的操作】

/**************** JavaScript数组操作 ***************/
// 创建数组:
var arr1 = [];
var arr2 = [1,2,3,4,5];
var arr3 = new Array( );
var arr4 = new Array(10);
var arr5 = new Array(1,2,3,4,5);

// Js数组中的元素不必是同一种类型:

var arr6 = [1,”西瓜”,null,true];

// 判断一个对象是否是数组:
Array.isArray( arr );    //显示true/false

// 读写数组
for(var i=0;i<num.length;i++){
	print(num[i]);
}

// 由字符串生成数组split(分隔符)
var sentence = "This is a sentence...";
var words = sentence.split(" ");   //使用空格分割字符串并存在word数组中

//数组的操作
// 浅复制:新数组的依然指向原来的数组,修改原数组则新数组的内容跟着改变
var nums = [1,2,3,4,5];
var arr = nums;    //直接讲nums赋值给arr
nums[0] = 100;	   //修改nums数组第一个元素的内容
print(arr.[0]);	   //arr数组的第一个元素的内容也发生了改变

//深复制:即对原数组的每一个元素分别进行复制
for(var i=0;i<nums.length;i++){
	arr[i] = nums[i];
}
nums[0] = 999;
print(arr[0]);		//此时arr数组的第一个元素不发生改变,仍为1

// 数组的存取操作
//查找元素indexOf()   若找不到则返回-1
var names = ["Bob","Lily","John","Eileen","Sivan"];
var name = readline();    //用户输入一个要查找的名字
var position = names.indexOf(name);  //函数返回的是被查找元素在数组中的索引
if(position>=0){  //如果用户查找的名字在数组中存在
	print("Found " + name + " at position " + postion);
}else{
	print(name + " not found in array...");
}

//lastIndexOf();

// 数组的字符串表示
//toString()方法
var days = ["Monday","Tuesday","Wednesday","Thursday"];
var days_string = days.toString();
print(days_stirng); //输出 	Monday,Tuesday,Wednesday,Thursday
//join()方法
var days_string1 = days.join();
print(days_join);	//输出 	Monday,Tuesday,Wednesday,Thursday
print(days);		//输出 	Monday,Tuesday,Wednesday,Thursday
//直接对一个数学使用print()方法时,系统会自动调用toString()方法

// 由已有数组创建新数组
var nums = [1,2,3,4];
var names = [‘Jane‘,‘Sam‘,‘Mike‘,‘Bob‘];
var arr = nums.concat(names);
print(arr);			//输出	1,2,3,4,Jane,Sam,Mike,Bob

//splice()截取数组创建新数组(对原数组会有影响)
var numbers = [1,2,3,4,5,6,68,7];
var arr = numbers.splice(3,4);	 //从索引为3(第三个)的元素开始截取4个元素
print(arr);			//输出4,5,6,68

//push()为数组末尾添加元素
var seasons = ["Summer","Autumn"];
var push = seasons.push("Winter");   //也同时添加多个元素
//unshift()为数组开头添加元素
var unshift = seasons.unshift("Spring");
//pop()删除数组末尾元素;
var pop = seasons.pop();
//shift()删除数组开头的元素
var shift = seasons.shift();

// 从数组中间位置添加和删除元素
var nums = [1,2,3,4,6,7,8];
var addNums = [9,9,9];
nums.splice(2,0,addNums);
print(nums);   //输出1,2,9,9,9,3,4,5,6,7,8

//数组排序
//reverse()方法
var nums = [1,2,3,4];
var arr = nums.reverse();
print(arr);		//输出4,3,2,1

//sort()方法
var name = ["Bob","Alice","Cindy"];
var arr = name.sort();
print(arr);     //输出 Alice,Bob,Cindy

//sort()方法只针对字符串根据字典顺序进行排序,
//如果是数字类型,则需要传入一个比较函数作为参数
function compare(num1,num2){
	return num1 - num2;
}
var nums = [1,32,45,12];
var arr = nums.sort(compare);   //仅传入函数名称
print(arr);		//输出1,12,32,45

/**************** 迭代器方法 ***************/
//forEach()  对数组中的每一个元素都执行某个方法
function square(num){
	print(num,num*num);
}
var num = [1,2,3,4];
num.forEach(square);		//输出1 1,2 4,3 9

//every()方法   接受一个返回值为bool类型的函数作为参数,
// 若对于数组中所有元素,该函数均返回true,则该方法返回true
function isEven(num){
	return num % 2 == 0;
}
var nums = [2,4,6,8];
var even = nums.every(isEven);
if(even){
	print("All numbers are even...");
}else{
	print("Not all numbers are even...");
}	//输出"All numbers are even..."

//some()方法   数组中只要有一个元素能使该函数返回true,该方法返回true
function isEven(num){
	return num % 2 == 0;
}
var nums = [2,3,4,5,6];
var even = nums.some(isEven);
print(even);			//输出true

// reduce()
// 对数组进行逐项累加
function add(runningTodal,currentValue){
	return runningTodal + currentValue;
}
var nums = [1,2,3,4,5];
var sum = nums.reduce(add);
print(sum);     //输出15

// 将数组元素链接成一个长字符串
function concat(accumulatedString,item){
	return accumulatedString + item;
}
var words = ["This","is","a","good","day"];
var string = words.reduce(concat);
print(string);     //输出"This is a good day"

var string2 = words.reduceRight(concat);	//从右到左执行
print(string2);	   //输出"day good a is This"

/*生成新数组的迭代器方法*/
// map()  类似forEach(),对数组中的每一个元素都执行操作,但是返回的是一个新的数组
function curve(num){
	return num+5;
}
var nums = [1,2,3,4];
var arr = nums.map(curve);
print(arr);			//输出 6,7,8,9

function first(word){
	return word[0];
}
var names = ["Alice","Bob","Cindy","Daniel"];
var arr = names.map(first); //结果为["A","B","C","D"]
print(arr。join());			//输出"A,B,C,D"
print(arr.join(""));		//输出"ABCD"

// filter()  传入返回值为bool类型的函数名作为参数,对数组中每个元素都执行函数,
// 但是返回结果为使函数返回值为true的元素
//e.g 判断数组元素的奇偶性
function isEven(num){
	return num %2 == 0;			//偶数
}
function isOdd(num){
	return num %2 != 0;			//奇数
}
var num = [];
for(var i=0;i<10;i++){
	num[i] = i+1;
}
var evens = num.filter(isEven);
print("Even numbers: ");
print(evens);					//输出2,4,6,8,10
var odds = num.filter(isOdd);
print("Odd numbers: ");			//输出1,3,5,7,9
print(odds);

//e.g 判断成绩是否合格
function passing(num){
	return num>=60;
}
var grade = [];
for(var i=0;i<20;i++){
	grade[i] = Math.floor(Math.random()*101);
}
var pass = grade.flter(passing);
print("All grades: ");
print(grade);
print("Passing Grades: ");
print(pass);	

//e.g.	过滤字符串数组
function del(str){
	if(str.indexOf("cie")>-1){
		return true;
	}else{
		return false;
	}
}
var words = ["receive","decide","percieve","deceit","convince"];
var misspelled = word.filter(del);
print(misspelled);		//输出"percieve"
时间: 2024-10-21 09:14:11

JavaScript操作数组的相关文章

关于javascript里面仿python切片操作数组的使用方法

其实在使用了好一段时间的 python之后,我觉得最让我念念不忘的并不是python每次在写函数或者循环的时候可以少用{}括号这样的东西(ps:其实也是了..感觉很清爽,而且又开始写js的时候老是想用xxx in range(): ...跪.:( ) 而是我觉得字符串操作的切片真实让我感到前所未有的爽. 试想一下,我们平时操作最多的数组和字符串在切片的帮助下,不知道可以省去多少时间和麻烦.而且有了切片甚至不用去记很多可以被切片代替的api. 今天我在啃<学习javascript数据结构与算法>

JavaScript splice() 方法,操作数组或者jquey grid的columns根据需要显示不同的字段

JavaScript splice() 方法,操作数组或者jquey grid的columns显示不同的字段 定义和用法 splice() 方法向/从数组中添加/删除项目,然后返回被删除的项目. 注释:该方法会改变原始数组. 语法 arrayObject.splice(index,howmany,item1,.....,itemX)   参数 描述 index 必需.整数,规定添加/删除项目的位置,使用负数可从数组结尾处规定位置. howmany 必需.要删除的项目数量.如果设置为 0,则不会删

浅谈JavaScript中数组操作常用方法

JavaScript中数组操作常用方法 1.检测数组 1)检测对象是否为数组,使用instanceof 操作符 if(value instanceof Array) { //对数组执行某些操作 } 2)获取对象的类型,比较是否为object类型(此方法只能检测是否为Object,不推荐) if(typeof(value)=="Object") { //对数组执行某些操作 } 3)检测对象是否为数组,使用Array.isArray()方法(只支持ie9+,firefox 4+,safar

javascript jquery数组操作小结

----------------------------------------------------------定义数组---------------------------------------------------------- $(function(){ var aArray = {};//定义一个数组 aArray['name'] = "张三"; aArray['sex'] = "男"; aArray['mail'] = "[email p

JavaScript的数组操作

JavaScript的数组操作 JavaScript数组也是对象,它使用单一的变量存储一系列的值. 数组和对象的区别 在JavaScript中,数组必须使用数字索引,对象可以使用命名索引. 数组是特殊类型的对象,具有特有的一些属性和方法. 如何区分数组和对象 方案1 ECMAScript5定义新方法Array.isArray() var arr = []; var obj = {}; console.log(Array.isArray(arr)); // true console.log(Arr

javascript 红宝书笔记之如何使用对象 如何操作数组

对象定义  ===  引用类型,描述的是一类对象所具有的属性和方法 新对象的创建 方法 new + 构造函数       var person = new Object(); 对象字面量表示       var person = {};                     备注:  新对象的创建方法,大多采用对象字面量的创建方法,这种方法能够给人封装数据的感觉.实际上,对象字面量也是向函数传递大量可选数据的首选 方式. 访问对象属性 方法 访问对象属性使用的都是 点 表示法:     con

javascript之操作数组方法

掌握如何操作数组,会让你的开发变得更加高效 1.栈和队列方法(以下四个方法都改变原数组) arr.push() //接受任意类型的参数,逐个添加到数组的末尾,并返回数组的长度 改变原数组 arr.pop() //从数组的末尾移除最后一项,减少数组的length值,返回移除的项 arr.shift() //移除数组中的第一个项并且返回该项,同时将数组的长度减一. arr.unshift() //在数组的前端添加任意个项,并返回新数组的长度 2.排序 reverse() //反转数组的排序 改变原数

javascript 操作DOM

一.document.getElementById() 根据Id获取元素节点 <div id="div1"> <p id="p1"> 我是第一个P</p> <p id="p2"> 我是第二个P</p> </div> window.onload = function () { var str = document.getElementById("p1").i

javascript中数组的22种方法 (转载)

前面的话 数组总共有22种方法,本文将其分为对象继承方法.数组转换方法.栈和队列方法.数组排序方法.数组拼接方法.创建子数组方法.数组删改方法.数组位置方法.数组归并方法和数组迭代方法共10类来进行详细介绍 对象继承方法 数组是一种特殊的对象,继承了对象Object的toString().toLocaleString()和valueOf()方法 [toString()] toString()方法返回由数组中每个值的字符串形式拼接而成的一个以逗号分隔的字符串 [注意]该方法的返回值与不使用任何参数