排序去重

// filter实现

var array = [1, 2, 1, 1, '1'];
function unique(array) {
var res = array.filter(function(item, index, array){
return array.indexOf(item) === index;
})
return res;
}
console.log(unique(array));

// 排序去重
var array = [1, 2, 1, 1, '1'];
function unique(array) {
return array.concat().sort().filter(function(item, index, array){
return !index || item !== array[index - 1]
})
}
console.log(unique(array));

// Object键值对
var array = [{value: 1}, {value: 1}, {value: 2}];

function unique(array) {
var obj = {};
return array.filter(function(item, index, array){
console.log(typeof item + JSON.stringify(item))
return obj.hasOwnProperty(typeof item + JSON.stringify(item)) ? false : (obj[typeof item + JSON.stringify(item)] = true)
})
}

console.log(unique(array)); // [{value: 1}, {value: 2}]

// ES6 Set实现
var unique = (a) => [...new Set(a)]

转载于:https://www.cnblogs.com/wugai/p/11582884.html

要实现listagg函数的排序去重,可以使用以下方法: 1. 使用order by子句对列值进行排序,然后再使用listagg函数进行拼接。通过在listagg函数中添加order by子句,可以确保拼接后的结果按照指定的排序顺序进行输出,从而实现排序去重的效果。 例如,假设我们有一个表格employee,其中包含姓名(name)和部门(department)两列。我们想要按照姓名的字母顺序对每个部门的员工进行拼接,并且去除重复的姓名。可以使用以下SQL语句实现: SELECT department, listagg(DISTINCT name, ',') WITHIN GROUP (ORDER BY name) AS employees FROM employee GROUP BY department; 这样,我们就可以得到按照姓名字母顺序排序去重后的每个部门的员工列表。 2. 另一种方法是在listagg函数中使用DISTINCT关键字,通过在拼接之前先对列值进行去重。通过将DISTINCT关键字添加到listagg函数中,可以确保拼接后的结果中不会包含重复的值。 例如,假设我们有一个表格orders,其中包含订单号(order_number)和产品名称(product_name)两列。我们想要按照订单号对产品名称进行拼接,并且去除重复的产品名称。可以使用以下SQL语句实现: SELECT order_number, listagg(DISTINCT product_name, ',') WITHIN GROUP (ORDER BY order_number) AS products FROM orders GROUP BY order_number; 这样,我们就可以得到按照订单号排序去重后的每个订单的产品列表。 综上所述,可以通过在listagg函数中添加order by子句或使用DISTINCT关键字实现listagg函数的排序去重。这样就可以根据需要对列值进行排序,并确保拼接后的结果中不包含重复的值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值