По определению WeakSet
имеет только три ключевые функции
Звучит более знакомо?
В некоторых приложениях разработчикам, возможно, потребуется реализовать быстрый способ для повторения серии данных, которая загрязнена партиями и множеством избыточности , но вы хотите выбрать только те, которые не были обработаны до (уникальные) . WeakSet может вам помочь. Пример ниже:
var processedBag = new WeakSet();
var nextObject = getNext();
while (nextObject !== null){
// Check if already processed this similar object?
if (!processedBag.has(nextObject)){
// If not, process it and memorize
process(nextObject);
processedBag.add(nextObject);
}
nextObject = getNext();
}
Одна из лучших структур данных для приложения выше - фильтр Bloom, который очень хорош для массивного размера данных. Однако для этой цели вы также можете использовать использование WeakSet.
Нет, я не думаю, что сможешь. По крайней мере, не писать что-то уродливое вроде:
SELECT ARRAY (
SELECT UNNEST(yourarray) LIMIT (
SELECT array_upper(yourarray, 1) - 1
)
)
Я не уверен в вашем контексте, но это должно дать вам что-то работать с:
CREATE TABLE test (x INT[]);
INSERT INTO test VALUES ('{1,2,3,4,5}');
SELECT x AS array_pre_pop,
x[array_lower(x,1) : array_upper(x,1)-1] AS array_post_pop,
x[array_upper(x,1)] AS popped_value
FROM test;
array_pre_pop | array_post_pop | popped_value
---------------+----------------+--------------
{1,2,3,4,5} | {1,2,3,4} | 5