foop
Version:
interfaces that describe their intentions.
46 lines (41 loc) • 3.27 kB
JavaScript
var preAllocate = require('../array/preAllocate')
/**
* Set into Array
* @since 5.0.0-beta.6
* @memberOf cast
*
* @param {Set} set cast to Array
* @return {Array} Array(x)
*
* @name setToArray
* @alias setToArr
* @alias fromSetToArray
*
* {@link https://github.com/andrewplummer/Sugar/blob/master/lib/common.js#L1227 sugar-settoarray}
* {@link https://github.com/lodash/lodash/blob/master/.internal/setToArray.js lodash-settoarray}
* @see {@link lodash-settoarray}
* @see {@link sugar-settoarray}
* @see cast/set
*
* @example
*
* setToArray(new Set(['eh', 'oh']))
* //=> ['eh', 'oh']
*
*/
module.exports = function setToArray(set) {
// allocate an array with the size of the set
var allocated = preAllocate(set)
var index = 0
// @NOTE this can mess things up when using index from `forEach`
// and just add empty items
// @NOTE remember not to 1 line arrow useless return here
//
// is `forEach` fastest? is shortest?
set.forEach(function (value) {
allocated[index++] = value
// allocated[index] = value
})
return allocated
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0VG9BcnJheS5qcyIsInNvdXJjZXMiOlsic2V0VG9BcnJheS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBwcmVBbGxvY2F0ZSA9IHJlcXVpcmUoJy4uL2FycmF5L3ByZUFsbG9jYXRlJylcblxuLyoqXG4gKiBTZXQgaW50byBBcnJheVxuICogQHNpbmNlIDUuMC4wLWJldGEuNlxuICogQG1lbWJlck9mIGNhc3RcbiAqXG4gKiBAcGFyYW0ge1NldH0gc2V0IGNhc3QgdG8gQXJyYXlcbiAqIEByZXR1cm4ge0FycmF5fSBBcnJheSh4KVxuICpcbiAqIEBuYW1lIHNldFRvQXJyYXlcbiAqIEBhbGlhcyBzZXRUb0FyclxuICogQGFsaWFzIGZyb21TZXRUb0FycmF5XG4gKlxuICoge0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmRyZXdwbHVtbWVyL1N1Z2FyL2Jsb2IvbWFzdGVyL2xpYi9jb21tb24uanMjTDEyMjcgc3VnYXItc2V0dG9hcnJheX1cbiAqIHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vbG9kYXNoL2xvZGFzaC9ibG9iL21hc3Rlci8uaW50ZXJuYWwvc2V0VG9BcnJheS5qcyBsb2Rhc2gtc2V0dG9hcnJheX1cbiAqIEBzZWUge0BsaW5rIGxvZGFzaC1zZXR0b2FycmF5fVxuICogQHNlZSB7QGxpbmsgc3VnYXItc2V0dG9hcnJheX1cbiAqIEBzZWUgY2FzdC9zZXRcbiAqXG4gKiBAZXhhbXBsZVxuICpcbiAqICAgIHNldFRvQXJyYXkobmV3IFNldChbJ2VoJywgJ29oJ10pKVxuICogICAgLy89PiBbJ2VoJywgJ29oJ11cbiAqXG4gKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gc2V0VG9BcnJheShzZXQpIHtcbiAgLy8gYWxsb2NhdGUgYW4gYXJyYXkgd2l0aCB0aGUgc2l6ZSBvZiB0aGUgc2V0XG4gIGNvbnN0IGFsbG9jYXRlZCA9IHByZUFsbG9jYXRlKHNldClcblxuICBsZXQgaW5kZXggPSAwXG5cbiAgLy8gQE5PVEUgdGhpcyBjYW4gbWVzcyB0aGluZ3MgdXAgd2hlbiB1c2luZyBpbmRleCBmcm9tIGBmb3JFYWNoYFxuICAvLyBhbmQganVzdCBhZGQgZW1wdHkgaXRlbXNcbiAgLy8gQE5PVEUgcmVtZW1iZXIgbm90IHRvIDEgbGluZSBhcnJvdyB1c2VsZXNzIHJldHVybiBoZXJlXG4gIC8vXG4gIC8vIGlzIGBmb3JFYWNoYCBmYXN0ZXN0PyBpcyBzaG9ydGVzdD9cbiAgc2V0LmZvckVhY2godmFsdWUgPT4ge1xuICAgIGFsbG9jYXRlZFtpbmRleCsrXSA9IHZhbHVlXG4gICAgLy8gYWxsb2NhdGVkW2luZGV4XSA9IHZhbHVlXG4gIH0pXG5cbiAgcmV0dXJuIGFsbG9jYXRlZFxufVxuIl0sIm5hbWVzIjpbImNvbnN0IiwibGV0Il0sIm1hcHBpbmdzIjoiQUFBQUEsR0FBSyxDQUFDLFdBQVcsR0FBRyxPQUFPLENBQUMsc0JBQXNCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBMEJuRCxNQUFNLENBQUMsT0FBTyxHQUFHLFNBQVMsVUFBVSxDQUFDLEdBQUcsRUFBRTs7RUFFeENBLEdBQUssQ0FBQyxTQUFTLEdBQUcsV0FBVyxDQUFDLEdBQUcsQ0FBQzs7RUFFbENDLEdBQUcsQ0FBQyxLQUFLLEdBQUcsQ0FBQzs7Ozs7OztFQU9iLEdBQUcsQ0FBQyxPQUFPLENBQUMsVUFBQSxLQUFLLENBQUEsQ0FBQyxBQUFHO0lBQ25CLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxHQUFHLEtBQUs7O0dBRTNCLENBQUM7O0VBRUYsT0FBTyxTQUFTO0NBQ2pCOyJ9