前言
前几天面试字节,死在数组身上。总结还是刷题太少,对数组的操作不是很熟悉。最近又开始了枯燥的刷题,与此同时又对数组进行了系统性的学习。总结为这篇学习笔记。有想一起刷题的小伙伴可以私聊我,一块进行枯燥的刷题时间。唯有熟能生巧
数组
文章目录
如何创建一个数组
// 字面量方式:
// 这个方法也是我们最常用的,在初始化数组的时候 相当方便
var a = [3, 11, 8]; // [3,11,8];
// 构造器:
// 实际上 new Array === Array,加不加new 一点影响都没有。
var a = Array(); // []
var a = Array(3); // [,,]
var a = Array(3,11,8); // [ 3,11,8 ]
之前版本的缺陷
let arr = new Array(6)
console.log(arr.length) //6
改进
let arr = Array.of(6)
console.log(arr) //6
类型检测与转换
console.log(Array.isArray("das")) //false
console.log(Array.isArray(12)) //false
console.log(Array.isArray([])) //true
转换成字符串
let t = [1,2,5,6,7].toString()
console.log(typeof t) //'string'
let t = String([1,2,3,5])
console.log(typeof t) //'string'
let t = [1,2,3,5].join("")
console.log(typeof t) //'string'
字符串转数组
let str = "Jack"
console.log(str.split("")) //["J","a","c","k"]
let str = "Jack"
//使用 Array.from 必须保证有length属性
console.log(Array.from(str)) //["J","a","c","k"]
展开运算符
如何连接两个字符串:
let arr1 = ["sda","qwqw"]
let arr2 = ["asdas"]
for(const value of arr2){
arr1.push(value)
}
arr = [...arr1,...arr2]
Example
Sum function:
function sum(...args){
return args.reduce((s,v)=>{
return (s+=v)
},0)
}
console.log(sum(1,2,3,5,4,6,7,8)) //34
console.log(sum(1,2,3,4)) //10
解构
let arr= [2,3]
let [a,b] = arr;
console.log(a,b) // 2 3
const [...arr] = "Jack"
//["J","a","c","k"]
let [,b] = [22,68]
console.log(b) //68
let [a,...b] = [56,98,2,5,555,232]
console.log(b) //98,2,5,555,232
let [a,b=2] = [1]
console.log(a) //1
数组添加元素
let arr1 = ["qwewq","4ew"]
let arr2 = ["3423","ewtwe"]
console.log([...arr1,...arr2])
console.log(arr1.push("eqw",...arr2))
function test(begin,end){
let arr = []
for(let i=begin;i<=end;i++){
arr.push(i)
}
return arr
}
数组出栈、入栈以及填充
let arr = [1,2,3,5]
arr.pop() //1 2 3
arr.unshift(0,6) //0 6 1 2 3
arr.shift() //0
console.log(Array(5).fill(1)) //1 1 1 1 1
console.log([1,2,3,4,5,6].fill("jack",1,3)) //[1, "jack", "jack", 4, 5, 6]
slice splice
splice函数 遇到的坑
2020/6/18
今天在Codewars上刷题时,使用splice
方法在for循环上遇到了坑。
题目要求很简单:删除前后一样的元素。
第一次进行尝试解决:
function uniq (s) {
let str = s[0]
for (let i = 1; i < s.length; i++) {
s[i] == str ? s.splice(i, 1) : str = s[i]
}
return s
}
uniq(