foop
Version:
interfaces that describe their intentions.
49 lines (44 loc) • 3.83 kB
JavaScript
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==