Javascript 之 Array

let arr = ['a', 'b', 'c', 'd', 'e'];
// 截取数组
slice(start, end)  // 从 start 位置开始截取到 end 位置(左闭右开取间),如果 start/end 为负值,则表示从数组的尾部开始, -1 代表最后一个元素
  console.log(arr.slice(2, 4));  // ['c', 'd']

// 数组转为字符串
join(separator)  // 用 separator 字符链接数组元素,并转为字符串,如果 separator 分割字符没有,默认是英文的逗号(,)
  console.log(arr.join());  // a,b,c,d,e
  console.log(arr.join('+'));  // a+b+c+d+e

// 截取数组片段
splice(start, deleteCount, value, ...)
  console.log(arr.splice(1, 2));  // ['b', 'c']  arr 为 ['a', 'd', 'e']  截取数组片段,从 start 开始,截取 2 个元素
  console.l0g(arr.splice(1, 0, 'f'));  // [] 空数组  arr 为 ['a', 'f', 'b', 'c', 'd', 'e']  如果 deleteCount 为零则表示添加
  console.log(arr.splice(1));  // ['b', 'c', 'd', 'e']  从 start 开始,一直截取到最后

// 颠倒数组元素的顺序
reverse()
  console.log(arr.reverse());  // ['e', 'd', 'c', 'b', 'a']

// 数组元素的添加
concat(value, ...)  // 往数组添加新的元素
  console.log(arr.concat('f', 'g'));  // ['a', 'b', 'c', 'd', 'e', 'f', 'g']
  console.log(arr.concat(['f', 'g']));  // ['a', 'b', 'c', 'd', 'e', 'f', 'g']
  console.log(arr.concat('f', ['g', ['o', 'p']]));  // ['a', 'b', 'c', 'd', 'e', 'f', 'g', ['o', 'p']]

push(value, ...)  // 在数组尾部添加一个或多个元素
  console.log(arr.push('f', 'g'));  // 返回数组的新长度, arr 为 ['a', 'b', 'c', 'd', 'e', 'f', 'g']

unshift(value, ...)  // 在数组的头部添加一个或多个元素
  console.log(arr.unshift('x', 'y'));   // 返回数组的新长度, arr 为 ['x', 'y', 'a', 'b', 'c', 'd', 'e']

// 数组元素的删除
pop()  // 移除并返回数组的最后一个元素
  console.log(arr.pop());  // 'e'  arr 为 ['a', 'b', 'c', 'd']

shift()  // 移除并返回数组的第一个元素
  console.log(arr.shift());  // 'a'  arr 为 ['b', 'c', 'd', 'e']

// 在数组中查找元素
indexOf(value, start)  // 在数组中查找 value 元素, start 为从什么位置开始找,是可选参数。如未找到返回 -1
  console.log(arr.indexOf('c'));  // 2
  console.log(arr.indexOf('d', 2));  // 3

lastIndexOf(value, start)  // 从后往前查找元素,从 start 位置开始(start 也是从后面开始计算位置),如果 start 没有,就是从最后开始,如未找到返回 -1
  console.log(arr.lastIndexOf('c'));  // 2
  console.log(arr.lastIndexOf('d', 2));  // 3

toLocaleString()  // 将数组转化为本地化字符串
toString()  // 将数组转化为字符串

 

forEach()  遍历所有元素

var arr = [1, 2, 3];
arr.forEach(function (item, index) {
  // 遍历数组的所有元素,item 表示元素的值, index 表示元素的位置
  console.log(index, item);    
})
// 0 1
// 1 2
// 2 3

编写一个通用的 forEach 函数,即可遍历数组,也可遍历对象
var arr = ['a', 'b', 'c'];
var obj = {x: 100, y: 200, z: 300};
forEach(arr, function (index, item) {
  console.log(index, item);
});
forEach(obj, function (key, val) {
  console.log(key, val);
})
function forEach (obj, fn) {
  var key;
  if (obj instanceof Array) {
    obj.forEach(function (item, index) {
      fn(index, item);
    })
  } else {
    for (key in obj) {
      if(obj.hasOwnProperty(key)) {
        fn(key, obj[key]);
      }
    }
  }
}

every  判断所有元素是否都符合条件

var arr = [1, 2 ,3];
var result = arr.every(function (item, index) {
  // 用来判断所有的数组元素,都 满足一个条件
  if (item < 4) {
    return true
  }
})
console.log(result);  // true

some  判断是否有至少一个元素符合条件

var arr = [1, 2, 3];
var result = arr.some(function (item, index) {
  // 用来判断所有的数组元素,只要有一个满足条件即可
  if (item <2) {
    return true;
  }
})
console.log(result);  // true

sort  数组排序

var arr = [1, 4, 5, 3, 2];
var arr2 = arr.sort(function (a, b) {
  // 从小到大排序
  return a - b;
  // 从大到小排序
  //return b - a;
})
console.log(arr2);  // [1, 2, 3, 4, 5]

map  对元素重新组装,生成新的数组

var arr = [1, 2, 3];
var arr2 = arr.map(function (item, index) {
  // 将数组重新组装
  return '<b>' + item + '</b>';
})
console.log(arr2);  // ['<b>1</b>', '<b>2</b>', <b>3</b>]

filter  过滤数组内符合条件的元素

var arr = [1, 2, 3];
var arr2 = arr.filter(function (item, index) {
  // 通过某一个条件过滤数组
  if (item >= 2) {
    return true; 
  }
})
console.log(arr2);  // [2, 3]

reduce(fn, inital)  从左到右的方式从数组元素中计算出一个值

var arr = [1, 2, 3];
var arr2 = arr.reduce(function (x, y) {
  return x * y;
})
console.log(arr2);  // (1*2)*3 = 6

var arr3 = arr.reduce(function (x, y) {
  return x * y;
}, 4)  // 如果 inital 有值,那它的行为会像是把该参数插入到 arr 的头部一样 arr = [4, 1, 2, 3]
console.log(arr3);  // ((4*1)*2)*3 = 24

reduceRight(fn, inital)  从右到左的方式从数组元素中计算出一个值

var arr = [1, 2, 3];
var arr2 = arr.reduceRight(function (x, y) {
  return x * y;
})
console.log(arr2);  // (3*2)*1 = 6

var arr3 = arr.reduceRight(function (x, y) {
  return x * y;
}, 4)  // 如果 inital 有值,那它的行为会像是把该参数插入到 arr 的尾部一样, arr = [1, 2, 3, 4]
console.log(arr3);  // ((4*3)*2)*1 = 24

 

posted @ 2017-10-15 21:54  Joffy  阅读(134)  评论(0编辑  收藏  举报