JavaScript操作数组总结

1.查找元素

indexOf()函数: 用来查找传进来的参数在目标数组中是否存在。如果目标数组包含该参数, 就返回该元素在数组中的索引; 如果不包含, 就返回 -1。

var names = ["David", "Cynthia", "Raymond", "Clayton", "Jennifer"];
putstr("Enter a name to search for: ");
var name = readline();
var position = names.indexOf(name);
if (position >= 0) {
print("Found " + name + " at position " + position);
} 
else {
print(name + " not found in array.");
}

//输入 Cynthia
// 输出为:Found Cynthia at position 1
//输入 Joe
//输出为:Joe not found in array

2.将数组用字符串表示

join() 和 toString() 这两个方法都返回一个包含数组所有元素的字符串, 各元素之间用逗号分隔开。

var names = ["David", "Cynthia", "Raymond", "Clayton", "Mike", "Jennifer"];
var namestr = names.join();
print(namestr); // David,Cynthia,Raymond,Clayton,Mike,Jennifer
namestr = names.toString();
print(namestr); // David,Cynthia,Raymond,Clayton,Mike,Jennifer

3.向数组添加元素

push() 和 unshift()
push():将元素添加到数组末尾
unshift():将元素添加到数组开头

var nums = [1,2,3,4,5];
print(nums); // 1,2,3,4,5
nums.push(6);
print(nums); // 1,2,3,4,5,6

var nums = [2,3,4,5];
print(nums); // 2,3,4,5
var newnum = 1;
nums.unshift(newnum);
print(nums); // 1,2,3,4,5

4.从数组中删除元素

pop()和shift()
pop():删除数组末尾元素
shift():删除数组第一个元素

ar nums = [1,2,3,4,5,9];
nums.pop();
print(nums); // 1,2,3,4,5

var nums = [9,1,2,3,4,5];
nums.shift();
print(nums); // 1,2,3,4,5

5.从数组中间添加和删除元素

splice()
该函数接受三个参数:其实索引(开始添加或删除元素的地方);删除的元素个数;想添加的元素

//添加
var nums = [1,2,3,7,8,9];
var newElements = [4,5,6];
nums.splice(3,0,newElements);
print(nums); // 1,2,3,4,5,6,7,8,9
//删除
var nums = [1,2,3,100,200,300,400,4,5];
nums.splice(3,4);
print(nums); // 1,2,3,4,5

6.对数组排序

reverse(): 该方法将数组中元素的顺序进行翻转

var nums = [1,2,3,4,5];
nums.reverse();
print(nums); // 5,4,3,2,1

sort(): 排序(常用于排序字符串)

var names = ["David","Mike","Cynthia","Clayton","Bryan","Raymond"];
names.sort();
print(names); // Bryan,Clayton,Cynthia,David,Mike,Raymond

//如果排序数字,则出现问题【sort() 方法是按照字典顺序对元素进行排序的, 因此它假定元素都是字符串类型】
var nums = [3,1,2,100,4,200];
nums.sort();
print(nums); // 1,100,2,200,3,4

//可以这样做,给sort指定一个排序函数
function compare(num1, num2) {
return num1 - num2;
} 
var nums = [3,1,2,100,4,200];
nums.sort(compare);
print(nums); // 1,2,3,4,100,200

7.迭代器方法(处理数组的每个元素或者判断数组的每个元素是否符合某个条件)

对数组中的每个元素应用一个函数
7.1 forEach(): 该方法接受一个函数作为参数, 对数组中的每个元素使用该函数

function square(num) {
print(num, num * num);
}
var nums = [1,2,3,4,5,6,7,8,9,10];
nums.forEach(square);
/*
1 1
2 4
3 9
4 16
5 25
6 36
7 49
8 64
9 81
10 100
*/

7.2 every(): 该方法接受一个返回值为布尔类型的函数, 对数组中的每个元素使用该函数。 如果对于所有的元素, 该函数均返回 true, 则该方法返回 true。

function isEven(num) {
return num % 2 == 0;
}
var nums = [2,4,6,8,10];
var even = nums.every(isEven);
if (even) {
print("all numbers are even");
} 
else {
print("not all numbers are even");
}
//输出all numbers are even

7.2 some(): 该方法接受一个返回值为布尔类型的函数, 只要有一个元素使得该函数返回 true,该方法就返回 true。

function isEven(num) {
return num % 2 == 0;
}
var nums = [1,2,3,4,5,6,7,8,9,10];
var someEven = nums.some(isEven);
if (someEven) {
print("some numbers are even");
}
else {
print("no numbers are even");
} 
nums = [1,3,5,7,9];
someEven = nums.some(isEven);
if (someEven) {
print("some numbers are even");
} 
else {
print("no numbers are even");
}

//some numbers are even
//no numbers are even

7.3 reduce(): 接受一个函数, 返回一个值。 该方法会从一个累加值开始, 不断对累加值和数组中的后续元素调用该函数, 直到数组中的最后一个元素, 最后返回得到的累加值。

function add(runningTotal, currentValue) {
return runningTotal + currentValue;
}
var nums = [1,2,3,4,5,6,7,8,9,10];
var sum = nums.reduce(add);
print(sum); // 显示 55

reduceRight(): 和reduce()方法类似,但是它从右到左执行。

function concat(accumulatedString, item) {
return accumulatedString + item;
}
var words = ["the ", "quick ","brown ", "fox "];
var sentence = words.reduceRight(concat);
print(sentence); // 显示 "fox brown quick the"

8.迭代器方法(生成新的数组)

map(): 接受一个函数,返回一个新数组,该数组的元素是对原有元素应用这个函数得到的结果,不影响原数组。而第7节中的forEach()则是通过参数函数对元素在进行改变。

function first(word) {
return word[0];
} 
var words = ["for","your","information"];
var acronym = words.map(first);
print(acronym.join("")); // 显示 "fyi"

filter(): 接受一个函数,返回一个新数组。和every()方法不同的是,当对数组中的所有元素应用该函数, 结果均为 true 时, 该方法并不返回 true, 而是返回
一个新数组, 该数组包含应用该函数后结果为 true 的元素。

function isEven(num) {
return num % 2 == 0;
}
function isOdd(num) {
return num % 2 != 0;
} 
var nums = [];
for (var i = 0; i < 20; ++i) {
nums[i] = i+1;
} 
var evens = nums.filter(isEven);
print("Even numbers: ");
print(evens);
var odds = nums.filter(isOdd);
print("Odd numbers: ");
print(odds);
/*
Even numbers:
2,4,6,8,10,12,14,16,18,20
Odd numbers:
1,3,5,7,9,11,13,15,17,19
*/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值