let arr1 = ['hello', 'world']
console.log(arr1); // Array(2)
console.table(arr1); // Array(2)
// alert(arr1) // hello,world
let arr2 = ['你好', '世界']
console.log(arr2);
console.log('------------------concat()方法------------------');
// concat()方法,用于【合并】两个或多个【数组】,【返回一个全新的数组】
let arr3 = arr1.concat(arr2)
console.log('arr3.length = ' + arr3.length); // arr3.length = 4
console.log(arr3); // (4) ["hello", "world", "你好", "世界"]
console.log('------------------copyWithin()方法------------------');
// copyWithin()方法,从(同一个)数组的指定位置【拷贝元素】到(同一个)数组的另一个指定位置中
// 注意:第一个参数是目标位置,第二个参是拷贝元素的起始位,第三个参数是拷贝元素的结束位置
// 如果不设置第三个参数,拷贝元素结束位置就是目标位置的前一位
let arr01 = ['a', 'b', 'c', 'd', 'e', 'f']
let arr02 = ['张三', '李四', '王五', '赵六']
let arr4 = arr01.copyWithin(3, 0, 1)
console.log(arr4); // (6) ["a", "b", "c", "a", "e", "f"]
console.log(arr01); // (6) ["a", "b", "c", "a", "e", "f"]
let arr04 = arr02.copyWithin(3, 0, 1)
// 传参(n1, n2, n3) 表示将数组下标为n2的元素开始后n3位元素,拷贝到该数组的下标为n1的元素位置上,且数组的长度不变,多余部分会被舍弃。
// n1 为目标位置下标
// n2 为拷贝起始位置下标
// n3 为共取元素个数
console.log(arr02); // (4) ["张三", "李四", "王五", "张三"]
console.log(arr04); // (4) ["张三", "李四", "王五", "张三"]
let a1 = [1,2,3,4,5,6]
// 输出[1,2,3,1,2,3]
console.log(a1.copyWithin(3, 0, 3)); // (6) [1, 2, 3, 1, 2, 3]
console.log(a1); // (6) [1, 2, 3, 1, 2, 3]
console.log(a1.length); // 6
console.log('------------------fill()方法------------------');
// fill()方法,使用一个【固定值】来【填充数组】
// let arr5 = arr4.fill('苹果')
arr4.fill('苹果')
// console.log(arr5); // (6) ["苹果", "苹果", "苹果", "苹果", "苹果", "苹果"]
console.log(arr4); // (6) ["苹果", "苹果", "苹果", "苹果", "苹果", "苹果"]
console.log('------------------includes()方法------------------');
// includes()方法,从数组中【检查】指定的数据【是否存在】,存在返回true,不存在返回false
// console.log(arr02);
console.log(arr02.includes('李四')); // true
console.log(arr02.includes('你好')); // false
console.log('------------------indexOf()方法------------------');
// indexOf()方法,从数组中检查指定的数据的位置(从前往后找第一个),不存在返回-1
// 从下标0开始索引指定数据,存在返回下标,不存在返回-1
console.log(arr02.indexOf('李四')); // 1
console.log(arr02.indexOf('你好')); // -1
// lastIndexOf()方法,从数组中检查指定的数据的位置(从后往前找第一个),不存在返回-1
console.log('------------------isArray()方法------------------');
// isArray()方法,用于【检查】指定的对象【是否是数组】,注意:该方法属于Array类型,不属于Arrary的对象
let str = 'abc'
console.log(Array.isArray(str)); // false
console.log(Array.isArray(arr01)); // true
console.log('------------------join()方法------------------');
// join()方法,用于将一个数组根据某个字符串拼接成字符串,该方法可不传参数,
// 【默认】是根据【逗号】【拼接】
console.log(arr01); // (6) ["苹果", "苹果", "苹果", "苹果", "苹果", "苹果"]
let str2 = arr01.join()
console.log(str2); // 苹果,苹果,苹果,苹果,苹果,苹果
let str3 = arr01.join('--')
console.log(str3); // 苹果--苹果--苹果--苹果--苹果--苹果
let str4 = arr01.join('')
console.log(str4); // 苹果苹果苹果苹果苹果苹果
console.log('------------------push()方法------------------');
// push()方法,向数组的【末尾添加】一个或更多【元素】,并【返回新的长度】
let arr6 = ['a', 'b', 'c', 'd']
console.log(arr6); // (4) ["a", "b", "c", "d"]
let arr6_size = arr6.push('e')
console.log(arr6_size); // 5
console.log(arr6); // (5) ["a", "b", "c", "d", "e"]
console.log('------------------pop()方法------------------');
// pop()方法,【删除】数组的【最后一个元素】并【返回】【删除的元素】
console.log(arr6); // (5) ["a", "b", "c", "d", "e"]
let s1 = arr6.pop()
console.log(arr6); // (4) ["a", "b", "c", "d"]
console.log(s1); // e
console.log('------------------unshift()方法------------------');
// unshift()方法,向数组的【开头添加】一个或更多【元素】,并【返回新的长度】
// console.log(arr6); // (4) ["a", "b", "c", "d"]
let len1 = arr6.unshift('张三', '李四')
console.log(arr6); // (6) ["张三", "李四", "a", "b", "c", "d"]
console.log(len1); // 6
console.log('------------------shift()方法------------------');
// shift()方法,【删除并返回】数组的【第一个元素】
// console.log(arr6); // (6) ["张三", "李四", "a", "b", "c", "d"]
let s2 = arr6.shift()
console.log(arr6); // (5) ["李四", "a", "b", "c", "d"]
console.log(s2); // 张三
console.log('------------------reverse()方法------------------');
// reverse()方法,【反转】数组的【元素顺序】
// console.log(arr6); // (5) ["李四", "a", "b", "c", "d"]
arr6.reverse()
console.log(arr6); // (5) ["d", "c", "b", "a", "李四"]
console.log('------------------slice()方法------------------');
// slice()方法,【选取/截取数组】的一部分,并返回一个新数组
// 注意:该方法的第一个参数是【起始位置】,第二个参数是【结束位置(取不到结束位置)】
// 第二个参数可以省略,表示从起始位置到最后全部返回
let arr7 = arr6.slice(2, 4)
console.log(arr7); // (2) ["b", "a"]
let a01 = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
console.log(a01.slice(5, 9)); // [5, 6, 7, 8]
console.log('------------------splice()方法------------------');
// splice()方法,从数组中【添加或删除元素】
// 如何删除,该方法需要传两个参数:第一个是起始位置,第二个是删除长度
// 如果第二个参数不传,就表示从起始位置往后全部删除
// 删除方法,删除的是原始数组里面的数据,返回的是删除的数据
let arr8 = ['a', 'b', 'c', 'd', 'e', 'f']
let arr9 = arr8.splice(2, 4)
console.log(arr8); // (2) ["a", "b"]
console.log(arr9); // (4) ["c", "d", "e", "f"]
// 该方法也可以传三个参数,第三个参数就是删除部分插入的新内容
let arr10 = ['a', 'b', 'c', 'd', 'e', 'f', 'g']
console.log(arr10.splice(2, 4, ['蕾嚎啊', '窝不郝'])) // (4) ["c", "d", "e", "f"]
console.log(arr10); // (4) ["a", "b", Array(2), "g"]
console.log('------------------repeat(num)方法------------------');
// repeat(num) 方法,用于【重复指定的字符串多少次】
console.log('-'.repeat(20)); // --------------------
console.log('------------------toString()方法------------------');
// toString()方法,【把数组转换为字符串】,并返回结果
console.log(arr10.toString()); // a,b,蕾嚎啊,窝不郝,g