JavaScript之数组API、对象API

数组API

forEach

forEach() 方法用于调用数组的每一个元素,并将元素传递给回调函数;forEach()对于空数组不会执行回调函数。没有返回值数组

var arr = ["apple", "orange", "banana"];
arr.name = 'Nicholas';
arr.push('pear');
arr.forEach((item, index) => {
    console.log(index + ' => ' + item); // 0 => apple,1 => orange, 2 => banana, 3 => pear
});
复制代码

forEach()函数只会遍历数组中数字索引的元素,若是是手动添加的非数字索引的元素将不会遍历。bash

map

每一个数组元素都执行一次ck函数,最后返回每次元素执行ck函数后返回值的集合(数组);不会改变原数组app

注意:若是当前数组中的数据时引用类型,那么原数组数组中的对象信息将会改变, 指针引用函数

var arr = [1, 2, 3, 4];
arr.push(5);
arr.name = 'Nicholas';
var newArr = arr.map((item, index) => {
    return item * 10;
});
console.log(newArr); // [10, 20, 30, 40, 50]
复制代码

map()与forEach()函数类似,只会遍历数组中数字索引的元素,若是是非数字索引的元素将不会遍历ui

filter

每一个数组元素都执行一次ck函数,最后返回每次元素执行ck函数后返回值的为true的元素集合(数组)spa

var arr = [1, 2, 3, 4, 5, 6];
arr.push(8);
arr.name = 10;
var newArr = arr.filter((item, index) => {
   if (item > 3) {
       return item;
   }
});
console.log(newArr); // [4, 5, 6]
复制代码

filter()不遍历数组的非数字索引的属性指针

indexOf

indexOf()方法返回在该数组中第一个找到的元素位置,若是它不存在则返回-1code

查询数组中是否含有"orange",不使用indexOf时:对象

var arr = ['apple','orange','pear'],
found = false;
 
for(var i= 0, l = arr.length; i< l; i++){
  if(arr[i] === 'orange'){
     found = true;
  }
}
console.log("found: " + found);  // found: true
复制代码

使用indexOf:排序

var arr = ['apple','orange','pear'];
console.log("found: " + arr.indexOf("orange") !== -1);
复制代码

every

每一个数组元素都执行一次ck函数,直到某个元素执行函数ck返回false,则直接返回false,若是所有返回true,则返回true(只要有不知足条件的,就返回false)

var a = [1, 2, 3, 4, 5];
var value = a.every((item, index) => {
    if (item > 4) {
        return true;
    }
});
console.log(value); // false
复制代码

some

对数组中每一个元素执行一次ck函数,知道某个元素返回true,则直接返回true。若是都返回false,则返回false(只要有知足条件的就返回true)

var a = [1, 2, 3, 4, 5];
var value = a.some((item, index) => {
    if (item > 4) {
        return true;
    }
});
console.log(value); // true
复制代码

sort

对于compare函数的解释:比较函数在第一个值应该位于第二个以后的状况下返回1,而在第一个值应该在第二个以前的状况下返回-1。交换返回值的意思是让更大的值排位更靠前,也就是对数组按照降序排序。返回值为排序后的数组

var arr = [23, 45, 3434,232, 344];
var newArr = arr.sort((a, b) => {
    if (a > b) {
        return 1; // 返回值为则换位置,即将大的换到后面,从小到大排序
    } else {
        return -1;
    }
});
console.log(newArr); // [23, 45, 232, 244, 3434]
复制代码

join

根据条件对数组组合成字符串

var arr = [1, 2, 3, 4];
var result = arr.join(',');
console.log(result); // 1,2,3,4
复制代码

对象API

for in

循环将遍历对象自己的全部可枚举属性,以及对象从其构造函数原型中继承的属性(更接近原型链中对象的属性覆盖原型属性

var arr = ["apple", "orange", "banana"];
arr.name = 'Nicholas';
arr.push('pear');
for (index in arr) {
    console.log(index + ': ' +arr[index]); // 0:apple, 1:orange, 2:banana, 3:pear, name:Nicholas
}
复制代码
相关文章
相关标签/搜索