Array.entries() Object.entries() 返回一个新的迭代数组 可枚举属性的键值对数组
let list = {a:'a1',b:'b1'}
console.log(Object.entries(list))
// [['a','a1'],['b','b1']]
let arr = ['a','b','c']
I. for(let item of arr){
log(item) //拿到arr每一个元素
}
Ⅱ.for(let [index,ele] of arr.entries()){ //数组解构
log(ele) //index拿到每个元素的索引值,ele拿到每个元素
}
Ⅲ》for(let item of arr.entries()){
log(item) //item拿到一个数组,【索引值,元素值】
}
Array.flat() 扁平数组 可指定深度递归遍历数组,返回新数组
let arr = [1, 2, [3, 4, [5, 6, [7, 8, [9, 10]]]]];
arr.flat(Infinity) // infinity只可任意展开深度的嵌套数组,默认为1
// [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
声明一个空数组,进行循环push,可能出现空数据情况,flat()对其数据扁平
Array.filter() 数组过滤,创建给定数组一部分的浅拷贝,返回新数组
Array.filter((element, index, array) => { /* … */ } )
// 当前值、索引、当前数组
Array.find() 返回满足符合条件的第一个元素的值,否则undefinded
Array.some() 有一个符合就返回true,所有都不符合返回false
Array.every() 有一个不符合返回false,否则返回true,如果是空数组,始终返回true
Array.map() 数组循环,返回新数组
forEach 数组循环,没有返回值,返回undefined,没有办法中止或跳出循环,除非抛出异常
for... of 不能遍历对象
var arr = ['nick','freddy','mike','james'];
for(let item of arr){
console.log(item) // 拿到每一项值
}
for in 遍历对象,遍历数组
var arr = ['nick','freddy','mike','james'];
var obj = {
0: 'nick',
1: 'freddy',
2: 'mike',
3: 'james'
};
for(let item in arr){
console.log(item,arr[item]) // 索引值,每一项值
}
Object.assign() 复制对象、对象合并
const obj = {"a":1}
const newObj = Object.assign({},obj)
// log({"a":1}) 复制对象obj到空对象,假如源对象是一个对象的引用,它仅仅会复制其引用值,并不能实现深拷贝
Object.assign(目标对象,源对象)
Object.hasOwn() 判断指定对象 的指定属性,返回true/false
const obj = {"name":"han"}
log(Object.hasOwn(obj,'name')) // true
Object.hasOwn(指定对象,指定对象的属性值)
Object.keys() Object.values() 返回一个数组
Object.keys(要返回其枚举自身属性的对象)
Object.freeze() 冻结对象,返回被冻结的对象
const obj = {a:'1'}
Object.freeze(obj)
obj.a = '2' // 此时修改不了
Object.isFrozen() 判断是否被冻结,返回true/false
Array.toString() 返回一个字符串
const arr = [1,2,'a']
log(arr.toString(arr)) // '1,2,a'
Array.splice() 删除/添加 元素 给数组 ,返回新数组,改变原始数组
const arr = [1,2,3]
Array.splice(指定修改的开始位置,要移除元素的个数,【要添加进数组的元素,不指定则表示只删除】)
log(arr.splice(1,0,'add')) // [1,'add',2,3]