美文网首页
【标准库】数组

【标准库】数组

作者: 南方帅 | 来源:发表于2019-03-04 10:53 被阅读0次

数组 也是Js 原生对象

  • 声明一个对象 最好是使用字面量赋值 这样做的原因是 使用构造函数 不同参数,行为不一致
// bad
var arr = new Array(1, 2);

// good
var arr = [1, 2];
var a = new Array(3);
var b = [undefined, undefined, undefined];

a.length // 3
b.length // 3

a[0] // undefined
b[0] // undefined

0 in a // false
0 in b // true
  • 识别是不是数组 Array.isArray(arr);
  • push pop 后进先出 修改会影响数组 堆栈 返回为之后的长度
[].pop() // undefined
  • shift unshifit 先进先出 修改会影响数组 队列
  • join() 以指定参数作为分隔符,将所有数组返回字符串
// 还可以通过`call` 方法,用于字符串或类似数组的对象。
Array.prototype.join.call('hello', '-')
// "h-e-l-l-o"

var obj = { 0: 'a', 1: 'b', length: 2 };
Array.prototype.join.call(obj, '-')
// 'a-b'
  • concat 多数组合并,相比push不会修改原数组返回一个新数组, 而且会把添加的打散 添加 而push 是直接添加
a.concat([1,2,3])
(6) [1, {…}, Array(2), 1, 2, 3]
  • reverse() 用于颠倒数组排序,会修改数组
  • slice 切分目标数组,原数组不变 a.slice() 相当于复制
// slice 一个非常重要的应用就是 将类数组对象转化成真正的数组

Array.prototype.slice.call({ 0: 'a', 1: 'b', length: 2 })
// ['a', 'b']

Array.prototype.slice.call(document.querySelectorAll("div"));
Array.prototype.slice.call(arguments);
  • splice 相对slice splice 会修改原数组 splice 返回是扔掉的一截 还可以用与插值
var a = ['a', 'b', 'c', 'd', 'e', 'f'];
a.splice(4, 2) // ["e", "f"]
a // ["a", "b", "c", "d"]

var a = [1, 1, 1];
a.splice(1, 0, 2) // []
a // [1, 2, 1, 1]
  • sort 按照字典排序,如果传入比较函数的话 按照自定义函数 排序
[
  { name: "张三", age: 30 },
  { name: "李四", age: 24 },
  { name: "王五", age: 28  }
].sort(function (o1, o2) {
  return o1.age - o2.age;
})
// [
//   { name: "李四", age: 24 },
//   { name: "王五", age: 28  },
//   { name: "张三", age: 30 }
// ]
  • map 一个参数为函数的时候 传入三个参数: 当前成员、当前位置、数组本身
[1, 2, 3].map(function(elem, index, arr) {
  return elem * index;
});

map 一个参数为函数,第二参数为跳掉函数内部this变量

var arr = ['a', 'b', 'c'];

[1, 2].map(function (e) {
  return this[e];
}, arr)
// ['b', 'c']
  • foreach 对比map map是放回操作后的数组, foreach没有返回值 其他基本都一样
    所以如果需要操作数组的话 ,获取修改后的返回数组的话 建议使用map foreach使用的话还会跳过空值
  • filter 过滤数组成员,满足对象的成员形成一个新的数组返回,不会修改原来的数组
[1, 2, 3, 4, 5].filter(function (elem) {
  return (elem > 3);
})
// [4, 5]
  • some every你断言 参数操作同map
  • reduce reduceRight 累积操作一个是自左 一个是自右
[1, 2, 3, 4, 5].reduce(function (a, b) {
  console.log(a, b);
  return a + b;
})
// 1 2
// 3 3
// 6 4
// 10 5
//最后结果:15
  • indexOf() lastIndexOf() 第二个参数是开始搜索的位置
  • 链式操作
  • 总结
    会在原数组上面操作的是 push pop shift unshift reverse splice sort
  • push unshift 返回操作后的数组长度
  • pop shift 返回出来的元素
  • splice 返回截取的部分(操作后的)

相关文章

  • 【标准库】数组

    数组 也是Js 原生对象 声明一个对象 最好是使用字面量赋值 这样做的原因是 使用构造函数 不同参数,行为不一致 ...

  • JavaScript中的数组(Array)

    简单归纳一下数组的概念和用法 概念 在window全局对象的哈希表中,存在标准库和非标准库。其中标准库中的数组,就...

  • Kotlin 数组容器

    Arrays Kotlin 标准库提供了arrayOf()创建数组, **ArrayOf创建特定类型数组 和Jav...

  • kotlin入门(三) 数组

    数组 Arrays Kotlin 标准库提供了arrayOf()创建数组,所以一般后缀是arrayOf()的,都可...

  • python3学习笔记:处理大型数组的计算

    对于任何涉及数组的计算密集型任务,请使用Numpy库。Numpy库的主要特性是为python提供了数组对象,比标准...

  • JS标准库/数组API

    JS内存有stack、heap。stack中有global/window对象,其是一个hash。其中有标准库(ob...

  • Week6(Boolan)

    c++标准库体系结构与内核分析 c的标准库基本都是由一个个函数组成,而c++标准库由6个紧密关联的part组成 泛...

  • 我是这样学习Python列表的!

    列表 不同于 C++ 和 Java,在 Python 中,没有在标准库中内置数组类型,而是通常利用列表来表示数组,...

  • 【数据结构与算法 - Swift实现】01 - 数组和字典

    在学习其他更复杂的数据结构之前,我们先简单看看Swift标准库自带的数组和字典。 数组 数组是我们在开发中经常用到...

  • JS 基础之数组与伪数组

    标准库之window.array. -window.Array 全局对象(也是函数)(1) 创建数组 注意:Arr...

网友评论

      本文标题:【标准库】数组

      本文链接:https://www.haomeiwen.com/subject/sbwhuqtx.html