常见数组方法及细节
/** * 查找元素在数组中出现的所有位置 * @param {要查找的数组} array * @param {要查找的元素} ele * @param {回调函数} callback */ function findAllIndex(array, ele, callback) { let indices = []; if (array && Array.isArray(array) && array.length) { let idx = array.indexOf(ele); while (idx != -1) { indices.push(idx); idx = array.indexOf(ele, idx + 1); } if ((typeof callback === "function") && callback) { callback(array, indices); } return indices; } return false; }
// 查询元素在数组出现的次数 var Obj = Arrar.reduce(function (obj, name) { obj[name] = obj[name] ? ++obj[name] : 1; return obj; }, {});
/** * * @desc 判断两个数组是否相等 * @param {Array} arr1 * @param {Array} arr2 * @return {Boolean} */ function arrayEqual(arr1, arr2) { if (arr1 === arr2) return true; if (arr1.length != arr2.length) return false; for (var i = 0; i < arr1.length; ++i) { if (arr1[i] !== arr2[i]) return false; } return true; }
//快速数组求和 let array=[12,312,3,67,3,423,878,21]; eval(array.join("+"));
//数组求最大最小 let array = [1,2,3,4,5,6,7,8,9] let maxNumber = Math.max.apply(Math,array) let minNumber = Math.min.apply(Math,array) Math 可以使用null
//数组去重 [...new Set([1,2,34,5,1,1,"1"])]
//如何判断一个数组 Array.isArray || instanceof Array || Object.prototype.toString.call || arr.constructor === Array
细节冷知识
slice() 方法返回一个新的数组对象,这一对象是一个由 begin和 end(不包括end)决定的原数组的浅拷贝。原始数组不会被改变
arr.slice();
// [0, end]
arr.slice(begin);
// [begin, end]
arr.slice(begin, end);
// [begin, end)
concat() 方法用于合并两个或多个数组。此方法不会更改现有数组,而是返回一个新数组 语法:var new_array = old_array.concat(value1[, value2[, ...[, valueN]]]) 参数是对象引用的话,那么也只是将对象的引用复制的新是数组,所以只能浅拷贝
indexOf()方法返回在数组中可以找到一个给定元素的第一个索引,如果不存在,则返回-1 语法:arr.indexOf(searchElement) arr.indexOf(searchElement[, fromIndex = 0]) 注意:索引值是一个负值,则将其作为数组末尾的一个抵消,即-1表示从最后一个元素开始查找,如果抵消后的索引值仍小于0,则整个数组都将会被查询。其默认值为0
不忘初心,不负梦想