数组的方法(array methods)


数组的方法(array methods)


Array 对象具有下列方法:

**

1.concat() 连接两个数组并返回一个新的数组**

**。

var myArray = new Array(“1”, “2”, “3”);
myArray = myArray.concat(“a”, “b”, “c”);
// myArray is now [“1”, “2”, “3”, “a”, “b”, “c”]

2. join(deliminator = ‘,’) 将数组的所有元素连接成一个字符串。

var myArray = new Array(“Wind”, “Rain”, “Fire”);
var list = myArray.join(” - “); // list is “Wind - Rain - Fire”
3.push() 在数组末尾添加一个或多个元素,并返回数组操作后的长度。

var myArray = new Array(“1”, “2”);
myArray.push(“3”); // myArray is now [“1”, “2”, “3”]
4.pop() 从数组移出最后一个元素,并返回该元素

var myArray = new Array(“1”, “2”, “3”);
var last = myArray.pop();
// myArray is now [“1”, “2”], last = “3”
5.shift() 从数组移出第一个元素,并返回该元素。

var myArray = new Array (“1”, “2”, “3”);
var first = myArray.shift();
// myArray is now [“2”, “3”], first is “1”
6.unshift() 在数组开头添加一个或多个元素,并返回数组的新长度。

var myArray = new Array (“1”, “2”, “3”);
myArray.unshift(“4”, “5”);
// myArray becomes [“4”, “5”, “1”, “2”, “3”]
7.slice(start_index, upto_index) 从数组提取一个片段,并作为一个新数组返回。

var myArray = new Array (“a”, “b”, “c”, “d”, “e”);
myArray = myArray.slice(1, 4); // starts at index 1 and extracts all elements
// until index 3, returning [ “b”, “c”, “d”]
8.splice(index, count_to_remove, addElement1, addElement2, …)从数组移出一些元素,(可选)并替换它们。

var myArray = new Array (“1”, “2”, “3”, “4”, “5”);
myArray.splice(1, 3, “a”, “b”, “c”, “d”);
// myArray is now [“1”, “a”, “b”, “c”, “d”, “5”]
// This code started at index one (or where the “2” was),
// removed 3 elements there, and then inserted all consecutive
// elements in its place.
9.reverse() 颠倒数组元素的顺序:第一个变成最后一个,最后一个变成第一个。

var myArray = new Array (“1”, “2”, “3”);
myArray.reverse();
// transposes the array so that myArray = [ “3”, “2”, “1” ]
10.sort() 给数组元素排序。

var myArray = new Array(“Wind”, “Rain”, “Fire”);
myArray.sort();
// sorts the array so that myArray = [ “Fire”, “Rain”, “Wind” ]
sort() 也可以带一个回调函数来决定怎么比较数组元素。这个回调函数比较两个值,并返回3个值中的一个:

例如,下面的代码通过字符串的最后一个字母进行排序:

var sortFn = function(a, b){
if (a[a.length - 1] < b[b.length - 1]) return -1;
if (a[a.length - 1] > b[b.length - 1]) return 1;
if (a[a.length - 1] == b[b.length - 1]) return 0;
}
myArray.sort(sortFn);
// sorts the array so that myArray = [“Wind”,”Fire”,”Rain”]
如果 a 小于 b ,返回 -1(或任何负数)
如果 a 大于 b ,返回 1 (或任何正数)
如果 a 和 b 相等,返回 0。
11.indexOf(searchElement[, fromIndex]) 在数组中搜索searchElement 并返回第一个匹配的索引。

var a = [‘a’, ‘b’, ‘a’, ‘b’, ‘a’];
console.log(a.indexOf(‘b’)); // logs 1
// Now try again, starting from after the last match
console.log(a.indexOf(‘b’, 2)); // logs 3
console.log(a.indexOf(‘z’)); // logs -1, because ‘z’ was not found
12.lastIndexOf(searchElement[, fromIndex]) 和 indexOf 差不多,但这是从结尾开始,并且是反向搜索。

var a = [‘a’, ‘b’, ‘c’, ‘d’, ‘a’, ‘b’];
console.log(a.lastIndexOf(‘b’)); // logs 5
// Now try again, starting from before the last match
console.log(a.lastIndexOf(‘b’, 4)); // logs 1
console.log(a.lastIndexOf(‘z’)); // logs -1
13.forEach(callback[, thisObject]) 在数组每个元素项上执行callback。

var a = [‘a’, ‘b’, ‘c’];
a.forEach(function(element) { console.log(element);} );
// logs each item in turn
14.map(callback[, thisObject]) 在数组的每个单元项上执行callback函数,并把返回包含回调函数返回值的新数组(译者注:也就是遍历数组,并通过callback对数组元素进行操作,并将所有操作结果放入数组中并返回该数组)。

var a1 = [‘a’, ‘b’, ‘c’];
var a2 = a1.map(function(item) { return item.toUpperCase(); });
console.log(a2); // logs A,B,C
15.filter(callback[, thisObject]) 返回一个包含所有在回调函数上返回为true的元素的新数组(译者注:callback在这里担任的是过滤器的角色,当元素符合条件,过滤器就返回true,而filter则会返回所有符合过滤条件的元素)。

var a1 = [‘a’, 10, ‘b’, 20, ‘c’, 30];
var a2 = a1.filter(function(item) { return typeof item == ‘number’; });
console.log(a2); // logs 10,20,30
16.every(callback[, thisObject]) 当数组中每一个元素在callback上被返回true时就返回true(译者注:同上,every其实类似filter,只不过它的功能是判断是不是数组中的所有元素都符合条件,并且返回的是布尔值)。

function isNumber(value){
return typeof value == ‘number’;
}
var a1 = [1, 2, 3];
console.log(a1.every(isNumber)); // logs true
var a2 = [1, ‘2’, 3];
console.log(a2.every(isNumber)); // logs false
17.some(callback[, thisObject]) 只要数组中有一项在callback上被返回true,就返回true(译者注:同上,类似every,不过前者要求都符合筛选条件才返回true,后者只要有符合条件的就返回true)。

function isNumber(value){
return typeof value == ‘number’;
}
var a1 = [1, 2, 3];
console.log(a1.some(isNumber)); // logs true
var a2 = [1, ‘2’, 3];
console.log(a2.some(isNumber)); // logs true
var a3 = [‘1’, ‘2’, ‘3’];
console.log(a3.some(isNumber)); // logs false
以上方法都带一个被称为迭代方法的的回调函数,因为他们以某种方式迭代整个数组。都有一个可选的第二参数 thisObject,如果提供了这个参数,thisObject 变成回调函数内部的 this 关键字的值。如果没有提供,例如函数在一个显示的对象上下文外被调用时,this 将引用全局对象(window).

实际上在调用回调函数时传入了3个参数。第一个是当前元素项的值,第二个是它在数组中的索引,第三个是数组本身的一个引用。 JavaScript 函数忽略任何没有在参数列表中命名的参数,因此提供一个只有一个参数的回调函数是安全的,例如 alert 。

19.reduce(callback[, initialValue]) 使用回调函数 callback(firstValue, secondValue) 把数组列表计算成一个单一值(译者注:他数组元素两两递归处理的方式把数组计算成一个值)

var a = [10, 20, 30];
var total = a.reduce(function(first, second) { return first + second; }, 0);
console.log(total) // Prints 60
reduceRight(callback[, initalvalue]) 和 reduce()相似,但这从最后一个元素开始的。

reduce 和 reduceRight 是迭代数组方法中最不被人熟知的两个函数.。他们应该使用在那些需要把数组的元素两两递归处理,并最终计算成一个单一结果的算法。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值