Skip to content

Instantly share code, notes, and snippets.

@reissbaker
Created January 12, 2012 19:04
Show Gist options
  • Save reissbaker/1602419 to your computer and use it in GitHub Desktop.
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;
};
@reissbaker
Copy link
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

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

@reissbaker
Copy link
Author

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

@ssorallen
Copy link

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

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

@reissbaker
Copy link
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