UNPKG

foop

Version:

interfaces that describe their intentions.

49 lines (44 loc) 3.83 kB
var isArray = require('../is/array') var getLength = require('../util/length') var castKey = require('./toKey') /** * Converts lists into objects. * Pass either * 1. a single array of `[key, value]` pairs, * 2. or two parallel arrays of the same length -- one of keys, and one of * the corresponding values. * Passing by pairs is the reverse of _.pairs. * @since 5.0.0-beta.6 * @memberOf cast * * @alias fromPairs * * @param {Array} list list of keys, or of [key, value] pairs * @param {Array} [values] values if not using pairs * @return {Object} * * @see cast/pairs * * @example * arrayToObj */ function arrayToObj(list, values) { var result = {} for (var i = 0, length = getLength(list); i < length; i++) { // keys, values if (values) { result[list[i]] = values[i] } // fallback to list as an object as pairs, else if (isArray(list[i])) { result[list[i][0]] = list[i][1] } // cast key, values-as-keys else { result[castKey(list[i])] = list[i] } } return result } module.exports = arrayToObj //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJyYXlUb09iai5qcyIsInNvdXJjZXMiOlsiYXJyYXlUb09iai5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBpc0FycmF5ID0gcmVxdWlyZSgnLi4vaXMvYXJyYXknKVxuY29uc3QgZ2V0TGVuZ3RoID0gcmVxdWlyZSgnLi4vdXRpbC9sZW5ndGgnKVxuY29uc3QgY2FzdEtleSA9IHJlcXVpcmUoJy4vdG9LZXknKVxuXG4vKipcbiAqIENvbnZlcnRzIGxpc3RzIGludG8gb2JqZWN0cy5cbiAqIFBhc3MgZWl0aGVyXG4gKiAxLiBhIHNpbmdsZSBhcnJheSBvZiBgW2tleSwgdmFsdWVdYCBwYWlycyxcbiAqIDIuIG9yIHR3byBwYXJhbGxlbCBhcnJheXMgb2YgdGhlIHNhbWUgbGVuZ3RoIC0tIG9uZSBvZiBrZXlzLCBhbmQgb25lIG9mXG4gKiAgICB0aGUgY29ycmVzcG9uZGluZyB2YWx1ZXMuXG4gKiBQYXNzaW5nIGJ5IHBhaXJzIGlzIHRoZSByZXZlcnNlIG9mIF8ucGFpcnMuXG4gKiBAc2luY2UgNS4wLjAtYmV0YS42XG4gKiBAbWVtYmVyT2YgY2FzdFxuICpcbiAqIEBhbGlhcyBmcm9tUGFpcnNcbiAqXG4gKiBAcGFyYW0gIHtBcnJheX0gbGlzdCBsaXN0IG9mIGtleXMsIG9yIG9mIFtrZXksIHZhbHVlXSBwYWlyc1xuICogQHBhcmFtICB7QXJyYXl9IFt2YWx1ZXNdIHZhbHVlcyBpZiBub3QgdXNpbmcgcGFpcnNcbiAqIEByZXR1cm4ge09iamVjdH1cbiAqXG4gKiBAc2VlIGNhc3QvcGFpcnNcbiAqXG4gKiBAZXhhbXBsZVxuICogIGFycmF5VG9PYmpcbiAqL1xuZnVuY3Rpb24gYXJyYXlUb09iaihsaXN0LCB2YWx1ZXMpIHtcbiAgbGV0IHJlc3VsdCA9IHt9XG5cbiAgZm9yIChsZXQgaSA9IDAsIGxlbmd0aCA9IGdldExlbmd0aChsaXN0KTsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgLy8ga2V5cywgdmFsdWVzXG4gICAgaWYgKHZhbHVlcykge1xuICAgICAgcmVzdWx0W2xpc3RbaV1dID0gdmFsdWVzW2ldXG4gICAgfVxuICAgIC8vIGZhbGxiYWNrIHRvIGxpc3QgYXMgYW4gb2JqZWN0IGFzIHBhaXJzLFxuICAgIGVsc2UgaWYgKGlzQXJyYXkobGlzdFtpXSkpIHtcbiAgICAgIHJlc3VsdFtsaXN0W2ldWzBdXSA9IGxpc3RbaV1bMV1cbiAgICB9XG4gICAgLy8gY2FzdCBrZXksIHZhbHVlcy1hcy1rZXlzXG4gICAgZWxzZSB7XG4gICAgICByZXN1bHRbY2FzdEtleShsaXN0W2ldKV0gPSBsaXN0W2ldXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJlc3VsdFxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGFycmF5VG9PYmpcbiJdLCJuYW1lcyI6WyJjb25zdCIsImxldCJdLCJtYXBwaW5ncyI6IkFBQUFBLEdBQUssQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDLGFBQWEsQ0FBQztBQUN0Q0EsR0FBSyxDQUFDLFNBQVMsR0FBRyxPQUFPLENBQUMsZ0JBQWdCLENBQUM7QUFDM0NBLEdBQUssQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUF1QmxDLFNBQVMsVUFBVSxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUU7RUFDaENDLEdBQUcsQ0FBQyxNQUFNLEdBQUcsRUFBRTs7RUFFZixLQUFLQSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxNQUFNLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7O0lBRXpELElBQUksTUFBTSxFQUFFO01BQ1YsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUM7S0FDNUI7O1NBRUksSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7TUFDekIsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7S0FDaEM7O1NBRUk7TUFDSCxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQztLQUNuQztHQUNGOztFQUVELE9BQU8sTUFBTTtDQUNkOztBQUVELE1BQU0sQ0FBQyxPQUFPLEdBQUcsVUFBVTsifQ==