/**
* 查找元素在数组中出现的所有位置
* @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