发布时间:
删除 Array 元素 #
delete #
- 删除一个数组元素时,数组的长度(
length
)不受影响 - 删除元素变成了 "空槽" (有时称为“稀疏数组”)。
- 使用迭代器遍历数组,空槽是被跳过,
- 普通的 for 循环输出
undefined
。
const list = [1, 2, 3];
console.log(list);
delete list[1]
console.log(list);
> (3) [1, 2, 3]
> (3) [1, 空白, 3]
console.log('--------forEach--------');
list.forEach(item=>console.log(item))
console.log('--------for--------');
for (let i = 0; i < list.length; i++) {
console.log(i,list[i]);
}
--------forEach--------
1
3
--------for--------
0 1
1 undefined
2 3
splice #
splice
数组长度发生变化,对应元素被删除
const list = [1, 2, 3];
console.log(list);
list.splice(1,1)
console.log(list);
> (3) [1, 2, 3]
> (2) [1, 3]
Array 求和 #
accumulator
:累加器
currentValue
:当前值或对象
0
:初始值
基本类型数组 #
const basicTypeArray = [1, 2, 3, 4];
const basicSum = basicTypeArray.reduce((accumulator, currentValue) => accumulator + currentValue,0);
console.log('basicSum: ',basicSum);
> basicSum: 10
对象类型数组 #
const objectTypeArray = [{a:'a',b:1}, {a:'b',b:2}, {a:'c',b:3}, {a:'d',b:4}];
const objectSum = objectTypeArray.reduce((accumulator, currentValue) => accumulator + currentValue.b,0);
console.log('objectSum: ',objectSum);
>objectSum: 10
解构赋值 #
解构赋值是一种从数组或对象中提取一系列值并将它们分配给一组标识符的简洁方法,有时称为“解包”原始数据结构的过程,尽管它不会修改原始数组或对象。
解构赋值使用数组或类似对象的标识符列表来跟踪值。最简单的形式称为绑定模式解构,每个值都从数组或对象中解压出来并分配给相应的变量,并使用 let 或 const (或 var)进行初始化:
使用花括号 ({}
) 来解构对象,使用方括号 ([]
) 来解构数组。
const myArray = [ false, true ];
const myObject = { firstValue: false, secondValue: true };
const [ myProp, mySecondProp ] = myObject;
> Uncaught TypeError: myObject is not iterable
const { myElement, mySecondElement } = myArray;
myElement
> undefined
mySecondElement;
> undefined
数组的解构按顺序进行,从左到右。解构赋值中的每个标识符对应于具有相同索引的数组元素:
const myArray = [ 1, 2, 3 ];
const [ myElement, mySecondElement, myThirdElement ] = myArray;
myElement;
> 1
mySecondElement;
> 2
myThirdElement;
> 3
这也是解构对象时的默认行为。但是,如果解构赋值中使用的标识符与对象属性的键匹配,则无论指定顺序如何,这些标识符都会填充相应的属性值:
const myObject = { firstValue: 1, secondValue: 2, thirdValue: 3 };
const { secondValue, thirdValue, firstValue } = myObject;
firstValue;
> 1
secondValue;
> 2
thirdValue;
> 3