// 1. 数组长度
var arr = ['aaa', 'bbb', 'ccc', 'ddd'];
var l = arr.length;
console.log("arr 的长度: " + l);
// 2.数组索引
var arr = ['aaa', 'bb', 'cc', 'dd'];
var x = arr[1];
console.log('数组下标为1, 也就是数组第二个元素是:' + x)
arr[1] = '修改过的值'
var x = arr[1];
console.log('数组下标为1, 也就是数组第二个元素是(修改后的):' + x)
// 3. indexOf --> : 返回指定元素的位置, 如果没有则返回-1
var arr = ['aaa', 'bbb', 'ccc', 'ddd']
var index = arr.indexOf('aaa');
var index2 = arr.indexOf('111');
console.log("aaa 在arr中的位置 " + index);
console.log("111 在arr中的位置 " + index2);
// 当数组的元素为对象时
var obj1 = { id: 1, name: '西安' };
var obj2 = { id: 2, name: '北京' };
var obj3 = { id: 3, name: '成都' };
var arr = [obj1, obj2, obj3];
var obj = { id: 1, name: '西安' }
var index = arr.indexOf(obj);
var index2 = arr.indexOf(obj1);
console.log("查看对象是否也能通过indexOf返回下表" + index);
console.log("查看对象是否也能通过indexOf返回下表" + index2);
// 事实表明, 只有当字面量相等时的对象实在对象数组中查找不到的, 除非时引用也相等时才能找到其下标
// 4.slice --> 接收1个或两个参数
// 当参数只有1个时,返回从参数指定位置到数组结尾的所有项
// 当参数有两个时,则将第一个参数作为起始,第二个参数作为终止下标返回数组项;这里不包含第二个参数所在的下表项,也就是 [arg1, arg2)
// 方法返回一个新数组, 原数组并不会改变
var arr = ['aaa', 'bbb', 'ccc', 'ddd', 'eee'];
var arr2 = arr.slice(1);
console.log('arr.slice(1) : ' + arr2)
var arr3 = arr.slice(0, 3);
console.log('arr.slice(0, 1) : ' + arr3)
var arr4 = arr.slice(1, -2);
console.log('arr.slice(-1) : ' + arr4)
// 当参数为负数时,计算参数应该时 此负数加上数组长度去计算
// 5. push --> 在数组后面添加若干元素,返回添加后数组的长度
var arr = ['aaa', 'bbb', 'ccc', 'ddd'];
var x = arr.push('ee', 'dd');
console.log("push 后的数组 以及长度: " + arr + " :" + x);
// 实时证明这个方法会改变原数组
// 6.pop --> 删除数组末尾元素, 返回被删除的元素, 若数组为空则返回undefined
var arr = ['aaa', 'bbb', 'ccc', 'ddd', 'eee'];
var x = arr.pop();
console.log('pop 后的数组 以及pop出来的数组项:' + arr + " _ " + x);
// 此方法也会改变原数组
var args = 'aaa'
var x = arr.pop(0);
console.log('pop 后的数组 以及pop出来的数组项:' + arr + " _ " + x);
// 并且传入参数不起作用
// 7. unshift --> 删除数组头部第一项, 返回删除的数组项
var arr = ['aaa', 'bbb', 'ccc', 'ddd'];
var x = arr.shift('111', '222');
console.log('shift 后的数组 以及shift出来的值:' + arr + " _ " + x);
// 8. unshift --> 在数组头部添加若干元素,返回添加后数组的长度
var arr = ['aaa', 'bbb', 'ccc', 'ddd'];
var x = arr.unshift('1111', '222');
console.log('shift 后的数组 以及shift出来的长度:' + arr + " _ " + x);
// 9. sort --> 对数组进行排序, 返回排序后的数组, 默认把数组每一项转化成字符后再进行排序。会改变原数组
var arr = ['a', 'c' , 'd', '0', '1']
var arr1 = arr.sort();
console.log("排序后的arr1 和 原来的arr " + arr1 + '和' + arr);
// 可以通过一个自定义的方法来排序
// 此函数接受俩个参数, 如果要第一个参数再第二个参数前面则返回负数,如果要第一个参数再第二个参数后面则返回正数,相等则返回0
function compare (arg1, arg2) {
return arg1 - arg2
}
var arr = [3, 2, 8, 9, 1]
console.log('排序后的数组 ' + arr.sort(compare));
// 10. reverse --> 对数组中的数据进行反转,返回反转后的数组, 改变原数组
var arr = ['aac', 'cbb', 'ccc', 'ddd'];
var arr1 = arr.reverse();
console.log("反转后的数组:" + arr1 + ', 以前那个数组:' + arr);
// 11. splice --> 从指定位置删除若干元素, 然后再从该位置添加若干元素, 结果返回被删除的元素
// 第一个参数表示起始删除的位置, 第二个参数表明要删除元素的个数, 第三个参数则是要添加的元素
var arr = ['a', 'v', 'b', 'c', 'd'];
// var arr1 = arr.splice(1, 3);
// console.log('删除后的数组 :' + arr);
// console.log('删除返回的值 :' + arr1);
var arr1 = arr.splice(1, 3, ['a','b','c']);
console.log('删除后的数组 :' + arr);
console.log('删除返回的值 :' + arr1);