个人开发的塔罗牌占卜小程序:【问问塔罗牌】 快来瞧瞧吧!
有序去重 ( 采用JS对象自带的key排序 )
function OrderlySort(_list = []) {
const current_list = [..._list];
let bl = !!current_list.length;
const _obj = {};
while (bl) {
_obj[current_list.shift()] = true;
bl = !!current_list.length;
}
return Object.keys(_obj);
}
无序去重
function OrderlyDefault(_list) {
const current_list = [..._list];
const filter_list = [];
const _obj = {};
let bl = !!current_list.length;
while (bl) {
const key = current_list.shift();
if (!_obj[key]) {
_obj[key] = true;
filter_list.push(key);
}
bl = !!current_list.length;
}
return filter_list;
}
深度-有序去重
function OrderlySortDepp(_list = []) {
const current_list = [..._list];
let bl = !!current_list.length;
const _obj = {};
while (bl) {
const item = current_list.shift();
if (Array.isArray(item)) {
current_list.push(...item);
} else {
_obj[item] = true;
}
bl = !!current_list.length;
}
return Object.keys(_obj);
}
深度-无序去重
function OrderlyDefaultDeep(_list) {
const current_list = [..._list];
const filter_list = [];
const _obj = {};
let bl = !!current_list.length;
while (bl) {
const item = current_list.shift();
if (Array.isArray(item)) {
current_list.push(...item);
}
else if (!_obj[item]) {
_obj[item] = true;
filter_list.push(item);
}
bl = !!current_list.length;
}
return filter_list;
}
demo
const list = [2, 3, 1, 2, 4, 6, 7, 8, 9, 1];
const list2 = [23, 45, 56, list, 2, 4, 3, 1, 11];
function logJSON(){
console.log(JSON.stringify(arguments))
}
logJSON(OrderlySort(list));
logJSON(OrderlyDefault(list));
logJSON(OrderlySortDepp(list2));
logJSON(OrderlyDefaultDeep(list2));
// 输出:
{"0":["1","2","3","4","6","7","8","9"]}
{"0":[2,3,1,4,6,7,8,9]}
{"0":["1","2","3","4","6","7","8","9","11","23","45","56"]}
{"0":[23,45,56,2,4,3,1,11,6,7,8,9]}