数组的增删改查(原生JS)
var Arr = [1, 2, 3, 4, 5, 6];
查
//查 直接遍历数组,这里分别遍历一维数组和二位数组:
// 一维数组
for (var i = 0; i < Arr.length; i++) {
console.log(Arr[i]);
}
// 二维数组
var per = [
[1, '孙红雷', '何辅堂', '为人正直不阿,欺强怜弱,善于机变。'],
[2, '巍子', '魏正先', '鹰视狼顾,心狠手黑。'],
[3, '陈数', '程立雪', '气质如兰,观之可亲,思想卓荦,才华压众。'],
[4, '郭珍霓', '刘二泉', '行动不便,但若论手段心机,十个健全人也不是她的对手。'],
[5, '陈祉希', '朱彩灵', '刀马旦出身,水般柔美,火样性格。含威不露,顾盼神飞。']
];
document.write('<table border = "1">');
for (var i = 0; i < per.length; i++) {
document.write('<tr>')
for (var j = 0; j < per[i].length; j++) {
document.write('<td>' + per[i][j] + '</td>');
}
document.write('</tr>')
}
document.write('</table>');
改
// 改 直接对索引号进行赋值。但写出的索引号大于数组本身的长度那中间加的都是空属性。比如:arr[8] = '8',则数组arr输出的是:[1, 2, 3, 4, 5, 6, 空属性 × 2, '8']。
Arr[5] = '5';
console.log(Arr);
删
// 删
// 从尾删
Arr.length--;
console.log(Arr);
// 从头删 原理:把索引号后面的值赋给前面的一位给覆盖掉,然后从左到右一步一步的的覆盖,到最后删除掉末尾元素就实现删掉开头的元素。
for (var i = 1; i < Arr.length; i++) {
Arr[i - 1] = Arr[i];
console.log(Arr);
}
Arr.length--;
console.log(Arr);
// 从中间删
for (var i = 4; i < Arr.length; i++) {
Arr[i - 1] = Arr[i];
}
Arr.length--;
console.log(Arr);
// 总结:从后面删直接在最后的 arr.length-- ;不管是从前面或者中间删,把 i 改成想删值的第几位,比如想在开头删就 i = 1,想在第四位的地方删,就 i = 4。这里的第几位不是索引!!
增
// 增
// 从后面加
Arr[Arr.length] = 78;
console.log(Arr);
// 从前面加
for (var i = Arr.length; i > 0; i--) {
Arr[i] = Arr[i - 1];
}
Arr[0] = 'head';
console.log(Arr);
// 从中间加
for (var i = Arr.length; i > 2; i--) {
Arr[i] = Arr[i - 1];
}
Arr[2] = 'second';
console.log(Arr);
// 总结:从后面加直接在最后的 arr.length = xxx ;不管是从前面或者中间加,把条件改成想加的值,比如想在开头加就 i > 0,想在索引为2的地方加就 i > 2。
总结
数组相当于就是连成的一条线,任何增删改查都是从头到尾或从尾到头进行的,所以进行操作时是把每位数的索引进行往前、往后移动。并不能像链表一样对数据的地址进行操作,花费的时间较长(对尾部(arr.length-1)的数据操作除外)。