Какая большая O-нотация методов Map.prototype.has и Set.prototype.has в Javascript? [Дубликат]

Вот пример того, как указать токен загрузки при загрузке:

const UUID = require("uuid-v4");

const fbId = "<YOUR APP ID>";
const fbKeyFile = "./YOUR_AUTH_FIlE.json";
const gcs = require('@google-cloud/storage')({keyFilename: fbKeyFile});
const bucket = gcs.bucket(`${fbId}.appspot.com`);

var upload = (localFile, remoteFile) => {

  let uuid = UUID();

  return bucket.upload(localFile, {
        destination: remoteFile,
        uploadType: "media",
        metadata: {
          contentType: 'image/png',
          metadata: {
            firebaseStorageDownloadTokens: uuid
          }
        }
      })
      .then((data) => {

          let file = data[0];

          return Promise.resolve("https://firebasestorage.googleapis.com/v0/b/" + bucket.name + "/o/" + encodeURIComponent(file.name) + "?alt=media&token=" + uuid);
      });
}

, а затем позвонить с помощью

upload(localPath, remotePath).then( downloadURL => {
    console.log(downloadURL);
  });

. Главное, что есть metadata, вложенных в свойство опции metadata. Установка firebaseStorageDownloadTokens в значение uuid-v4 сообщит Cloud Storage, чтобы использовать это как общедоступный токен аутентификации.

Большое спасибо @martemorfosis

31
задан Brian M. Hunt 27 June 2015 в 17:59
поделиться

1 ответ

Справа от этот самый абзац связан с:

Устанавливать объекты должны быть реализованы с использованием [механизмов], которые в среднем предоставляют время доступа, которое являются сублинейными по количеству элементов в коллекции.

Вы найдете то же предложение для Maps , WeakMaps и WeakSets .

Похоже, спецификация ECMA указывает, что реализации (например, Set.prototype.has) должны использовать алгоритм линейного времени (O(n)).

Нет:

Структуры данных, используемые в этой спецификации объектов Set, предназначены только для описания требуемой наблюдаемой семантики объектов Set.

Наблюдаемая семантика в основном связана с предсказуемым порядком итерации (который все еще может быть реализован эффективным и быстрым ). В спецификации предполагается, что реализация использует хеш-таблицу или что-то подобное с постоянным доступом, хотя деревья (с логарифмической степенью доступа) также разрешены.

26
ответ дан Bergi 26 August 2018 в 12:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: