这是学习过程中记录的一些关于数组操作的常用属性或方法,记录一下方便以后使用。
// 数组去重
var arr1 = [1,1,2,3,4,5,6,3,2,4,5,'a','b','c','a',6,7,8,3,5,7,8,34]
// console.log(Array.from(new Set(arr1))) // [1, 2, 3, 4, 5, 6, "a", "b", "c", 7, 8, 34]


// 数组拼接 concat() 此方法不会更改现有数组,而是返回一个新数组。可拼接多个数组
// var new_array = old_array.concat([ value1 [,value2 [,... [,valueN ]]]])
var arr2 = [1,2,3,4,5]
var arr3 = [6,7,8,9,0]
// console.log(arr2.concat(arr3)) // [1,2,3,4,5,6,7,8,9,0]


// 该Array.isArray() 方法确定传递的值是否为Array。
Array.isArray([1, 2, 3]);  // true
Array.isArray({foo: 123}); // false
Array.isArray('foobar');   // false
Array.isArray(undefined);  // false


// 修改替换数组中的指定索引的值(会改变原数组) 返回修改后的新数组
// arr .fill(value [,start [ ,end]])
// value 填充数组的值。 start 开始的索引(可选)。end 结束索引(可选),默认为this.length。
[1, 2, 3].fill(4);               // [4, 4, 4]
[1, 2, 3].fill(4, 1);            // [1, 4, 4]
[1, 2, 3].fill(4, 1, 2);         // [1, 4, 3]


// flat()递归到指定深度的数组。该flat()方法创建一个新数组,所有子数组元素以递归方式连接到指定的深度。
// var newArray = arr .flat([depth]); // depth (可选)要递归到的深度默认1
var arr4 = [1,2,[3,4]];
console.log(arr4.flat()) // [1,2,3,4]
var arr5 = [1,2,[3,4,[5,6]]];
console.log(arr5.flat(2)) // [1,2,3,4,5,6]


// 该includes()方法检索数组是否存在其条目中包括的特定值,返回true或false。
// arr .includes(valueToFind [,fromIndex]) // valueToFind 要搜索的值。fromIndex (可选)从第几位开始搜索默认 0
[1, 2, 3].includes(2);     // true
[1, 2, 3].includes(4);     // false


// 数组求和 reduce()  accumulator 累加后的值  currentValue 当前值
const arr6 = [1, 2, 3, 4];
const reducer = (accumulator, currentValue) => accumulator + currentValue;
// 1 + 2 + 3 + 4
console.log(arr6.reduce(reducer)); // 10


// 该some()方法测试数组中是否至少有一个元素通过了检测
// arr.some(callback(element [,index [,array]]) [,thisArg ])
var arr7 = [1, 2, 3, 4, 5];
var even = function(element) {
  return element === 2;
};
console.log(arr7.some(even));


// toString() 把数组变成字符串
var array1 = [1, 2, 'a', '1a'];
console.log(array1.toString()); // "1,2,a,1a"