Skip to content

Instantly share code, notes, and snippets.

@reissbaker
Created January 12, 2012 19:04
Show Gist options
  • Select an option

  • Save reissbaker/1602419 to your computer and use it in GitHub Desktop.

Select an option

Save reissbaker/1602419 to your computer and use it in GitHub Desktop.
key selection, remapping
var selectKeys = function(hash, keys) {
var output, prop, index;
output = {};
if(!keys) return {};
if(keys instanceof Array) {
for(index = 0; index < keys.length; index++) {
output[keys[index]] = hash[keys[index]];
}
return output;
}
for(prop in keys) {
if(keys.hasOwnProperty(prop)) {
if(typeof keys[prop] === 'boolean') {
if(keys[prop]) output[prop] = hash[prop];
// if false, don't copy the property
} else {
output[keys[prop]] = hash[prop];
}
}
}
return output;
};
@clizzin
Copy link
Copy Markdown

clizzin commented Jan 12, 2012

Oh I see, it's renaming the keys. Maybe this function would be better named "rename-keys"? I got thrown by the use of "parse" and "options"; "parse options" sounds to me like parsing command-line flags.

@reissbaker
Copy link
Copy Markdown
Author

Yep. Good point. Renaming it to selectKeys, made it select (and not remap) keys if given an array, and if given an object can remap them.

@ssorallen
Copy link
Copy Markdown

Line 4 you can use if (!keys) instead of checking for undefined. That will catch null too.

@reissbaker
Copy link
Copy Markdown
Author

Nice. Changed it. That's a win for compression, too, since typestrings can't be compressed but variable names can.

@ssorallen
Copy link
Copy Markdown

Line 1 has a syntax error. You can drop the selectKeys:.

var selectKeys = selectKeys: function(hash, keys) {

@reissbaker
Copy link
Copy Markdown
Author

That's what I get for copying+pasting out of an object literal.

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