Array 【javascript】

Array 【javascript】

构造数组

console.log(Array("1", "2")); //[ '1', '2' ]
console.log(new Array(5)); //[ <5 empty items> ]
console.log(Array.of(1, 2, 3)); //[1,2,3]

length属性

console.log([1, 2, 3].length); //3

从 String\Map\Set 转为 Array

let map = new Map().set("hi", 1).set("lp", 0);
console.log(map);
let set = new Set().add(1).add(2).add(1, 2);
console.log(set); //1 2
console.log(Array.from("hello")); //[ 'h', 'e', 'l', 'l', 'o' ]
console.log(Array.from(map)); //[ [ 'hi', 1 ], [ 'lp', 0 ] ]
console.log(Array.from(set)); //[ 1, 2 ]

带有length属性的对象 转为 Array

console.log(Array.from({
    0: 1,
    1: 2,
    2: 3,
    length: 3
})); //[1,2,3]

Array.from(array,fun)

let x = [1, 2, 3];
console.log(Array.from(x, number => number + 2)); //[3,4,5]

arguments对象转array

function test() {
    console.log(arguments); //[Arguments] { '0': 1, '1': 2, '2': { l: 1 } }
    console.log(Array.from(arguments)); //[ 1, 2, { l: 1 } ]
}
test(1, 2, {
    l: 1
});

Array.of(…args) 将参数转为Array

console.log(Array.of(1, 2, 4)); //[1,2,4]

//map
console.log(Array.of(1, 2, 3).map((v, i) => {
    return v + i;
})); //[1,3,5]

join

console.log(x.join('-')); //1-2-3

数组空位

x = [1, , 2, 3];
console.log(x[1]); //undefined
//map()会跳过空位置
//join()会视空位置为空字符串
x = [1, 2, 3];
x[5] = 9;
console.log(x); //[ 1, 2, 3, <2 empty items>, 9 ]
console.log(x.length); //6

检测数组

x = [1, 2, 3];
console.log(Array.isArray(x)); //true
``

## 迭代器 keys() values() entries()
```js
x = [1, 2, 3];
console.log(x.keys()); //[0, 1, 2]
console.log(x.values()); //[1,2,3]
console.log(x.entries()); //[[0,1],[1,2],[2,3]]
for (const [v, i] of x.entries()) {
    console.log([v, i]); //[0,1] [1,2] [2,3]
}

数组析构

x = [1, 2];
const [a, b] = [...x];
console.log(a, b); //1 2

数组填充 fill

//fill改变原来的数组并返回数组
x = [1, 2, 3, 4];
console.log(x.fill(3)); //[3,3,3,3]
x = [1, 2, 3, 4];
console.log(x.fill(9, 2)); //[1,2,9,9] index大于等于2的
x = [1, 2, 3, 4];
console.log(x.fill(9, 1, 2)); //[1,9,3,4]  index大于等于1小于2
/*
x.fill(1,-1,-3) 等价于 x.fill(1,x.length-1,x.length-3)
*/

批量复制 copyWithin

x = [1, 2, 3, 4, 5, 6, 7, 8, 9, ];
console.log(x.copyWithin(5)); //[1,2,3,4,5,1,2,3,4]
//也可以接收三个参数 没必要记住 知道Array有这个方法提供类似的功能就好了
//用到时候去看看mdn

转换方法 valueOf\toString…

x = [1, 2, 3, "你好"];
console.log(x.valueOf()); //[1,2,3,'你好']
console.log(x.toString()); //1,2,3,你好
console.log(x.toLocaleString()); //1,2,3,你好

栈方法 push\pop

x = [1, 2, 3];
x.push(4);
console.log(x.pop()); //4
console.log(x); //[1,2,3]

队列方法 push\shift\unshift

//shift
x = [1, 2, 3];
x.push(4);
console.log(x.shift()); //1
console.log(x); //[2,3,4]
//unshift
x = [1, 2, 3];
x.unshift(7, 8, 9);
console.log(x); //[7,8,9,1,2,3]

排序方法 sort\reverse

//reverse()和sort()都返回调用它们的数组的引用
x = [1, 5, 2];
console.log(x.sort()); //[1,2,5]
console.log(x.reverse()); //[5,2,1]
x = [{
    n: 1
}, {
    n: 5
}, {
    n: 2
}];
console.log(x.sort((a, b) => {
    if (a.n > b.n) {
        return -1;
    } else if (a.n < b.n) {
        return 1;
    } else {
        return 0;
    }
})); //[ { n: 5 }, { n: 2 }, { n: 1 } ]

拼接concat\切割slice\替换splice

x = [1, 2, 3];
console.log(x.concat(1, 2, [3, 4]));
//[1, 2, 3, 1 , 2, 3, 4]
x = [1, 2, 3, 4, 5];
console.log(x.slice(1, 4)); //[2,3,4]
x = [1, 2, 3, 4, 5];
console.log(x.splice(1, 2, ...[9, 9])); //[2,3]
console.log(x); //[ 1, 9, 9, 4, 5 ]

搜索 indexOf\lastIndexOf\includes

x = [1, 2, 3, 4, 4];
console.log(x.indexOf(4)); //3
console.log(x.lastIndexOf(4)); //4
console.log(x.includes(4)); //true
console.log(x.includes(2, 2)); //false 从index=2开始找

断言函数 find\findIndex

x = [1, 2, 3, 4, 5];
console.log(x.find((el, index, array) => {
    return el > 3;
})); //4

console.log(x.findIndex((el, index, array) => {
    return el > 3;
})); //3 index

迭代方法 every\filter\forEach\map

every对于每一项都返回true则返回true

x = [1, 2, 3, 4];
console.log(x.every((v, index, array) => {
    return v < 1;
})); //false

filter

console.log(x.filter((v, index, array) => {
    return v >= 3;
})); //[3,4]

forEach 没有返回值

x = [1, 2, 3, 4];
x.forEach((v, index, array) => {
    console.log(index, v);
    //0 1\ 1 2\ 2 3\ 3 4 
});

map 迭代

x = [1, 2, 3, 4];
console.log(x.map((v, index, array) => {
    return [index, v];
})); //[ [ 0, 1 ], [ 1, 2 ], [ 2, 3 ], [ 3, 4 ] ]

归并方法 reduce\reduceRight

//遍历数组 可以得到方式次的返回值
x = [1, 2, 3, 4];
console.log(x.reduce((pre, cur, index, array) => {
    return pre + cur;
})); //10 = 1+2+3+4

//同理reduceRight 从右向左遍历

ArrayBuffer

const buf = new ArrayBuffer(16); //申请16字节空间
console.log(buf.byteLength); //16
const buf1 = buf.slice(4, 12);
console.log(buf1.byteLength); //8
buf[1] = '1';
console.log(buf);
/**
 ArrayBuffer {
     [Uint8Contents]: < 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 > ,
         byteLength: 16,
         '1': '1'
 }
 */
console.log(buf[1]); //1

DateView

略 用时再学吧 ArrayBuffer申请的空间可以供DateView使用 DateView上有一系列操作

定型数组

我们知道js中的元素每个位置想放什么就放什么、不像Java C一样是定类型的
但js提供了形如 Int8Array() Int32Array() Int16Array() Float32Array() 的构造函数
如需用到再学吧 知道有这么回事 就好

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

高万禄

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值