/**
* 通过id获取对应的对象
*
* @param {string} id ID
* @param {array} array 数据集
* @return {object} id所在的对象
*/
const findByID = (id, array) =>
(array || []).find(({ id: itemID }) => itemID === id);
/**
* 通过id获取对应的对象的下标
*
* @param {string} id ID
* @param {array} array 数据集
* @return {number} id所在的对象的下标
*/
const findIndexByID = (id, array = []) =>
(array || []).findIndex(({ id: itemID }) => itemID === id);
/**
* array1 包含 array2,并在 array1 中把所有的 array2 剔除
*
* @param {array} array1 数组A
* @param {array} array2 数组B
* @return {array} 剔除了所有 array2 的 array1
*/
const compare = (array1, array2) =>
Object.keys(array1).length === Object.keys(array2).length &&
Object.keys(array1).every(key => array1[key] === array2[key]);
/**
* 数组根据key去重
*
* @param {array} array 数组A
* @param {string} key 键
* @return {array} 去重后的数组
*/
const unique = (array, key) => {
const object = {};
array.reduce((prev, next) => {
// eslint-disable-next-line no-unused-expressions
object[next[key] + typeof next[key]]
? ''
: (object[next[key] + typeof next[key]] = true && prev.push(next));
return prev;
}, []);
return array;
};
/**
* 自身数组去重
*
* @param {array} array 数组
* @return {array} 去重后的数组
*/
const selfUnique = array => {
const oldArrStringf = [];
array.forEach(item => {
oldArrStringf.push(JSON.stringify(item));
});
const uniqueArr = Array.from(new Set(oldArrStringf));
const newArrs = [];
uniqueArr.forEach(item => {
newArrs.push(JSON.parse(item));
});
return newArrs;
};
export { findByID, findIndexByID, compare, unique, selfUnique };