Skip to content

Instantly share code, notes, and snippets.

@assertchris
Created March 23, 2011 11:09
Show Gist options
  • Save assertchris/882947 to your computer and use it in GitHub Desktop.
Save assertchris/882947 to your computer and use it in GitHub Desktop.
JavaScript Object.combine method
Object.combine = function (keys, values) {
if (!keys.length || !values.length || keys.length != values.length) {
return null;
}
var index = null,
length = keys.length,
results = {};
for (index = 0; index < length; index++) {
results[keys[index]] = values[index];
}
return results;
};
var _classes = [
'interface-renderer-time-excluded',
'interface-renderer-time-selected',
'interface-renderer-time-current',
'interface-renderer-date-previous-month',
'interface-renderer-date-next-month',
'interface-renderer-date-current',
'interface-form-cropper-element',
'interface-form-element-textbox-element',
'interface-form-element-textbox-focussed',
'interface-form-element-textbox-disabled',
'interface-form-element-textbox-clicked',
'interface-form-element-textarea-element',
'interface-form-element-textarea-focussed',
'interface-form-element-textarea-disabled',
'interface-form-element-textarea-clicked',
'interface-form-element-button-element',
'interface-form-element-button-focussed',
'interface-form-element-button-disabled',
'interface-form-element-button-clicked',
'interface-form-element-checkbox-element',
'interface-form-element-checkbox-focussed',
'interface-form-element-checkbox-disabled',
'interface-form-element-checkbox-clicked',
'interface-form-element-checkbox-checked',
'interface-form-element-radio-element',
'interface-form-element-radio-focussed',
'interface-form-element-radio-disabled',
'interface-form-element-radio-clicked',
'interface-form-element-radio-checked'
];
Classes = Object.combine(
Array.from(_classes),
Array.from(_classes)
);
console.log(Classes);
@arian
Copy link

arian commented Mar 23, 2011

Isn't this the same as _classes.associate(_classes) -- http://mootools.net/docs/core/Types/Array#Array:associate

@assertchris
Copy link
Author

It is very similar, except for a two small differences:

  • If either array has no items, this method returns null instead of an empty object.
  • If their lengths do not match, this method returns null instead of a partial set of key-value pairs (according to the incomplete array).

Currently there is no way to know if the results of values.associate(keys) returns a valid array according to these 2 conditions without further inspection - the method above can be compared to null to find this out. I also prefer this syntax over associate. :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment