You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
51 lines
1.4 KiB
51 lines
1.4 KiB
/** |
|
* Copyright 2013-2015, Facebook, Inc. |
|
* All rights reserved. |
|
* |
|
* This source code is licensed under the BSD-style license found in the |
|
* LICENSE file in the root directory of this source tree. An additional grant |
|
* of patent rights can be found in the PATENTS file in the same directory. |
|
* |
|
* @providesModule mapObject |
|
*/ |
|
|
|
'use strict'; |
|
|
|
var hasOwnProperty = Object.prototype.hasOwnProperty; |
|
|
|
/** |
|
* Executes the provided `callback` once for each enumerable own property in the |
|
* object and constructs a new object from the results. The `callback` is |
|
* invoked with three arguments: |
|
* |
|
* - the property value |
|
* - the property name |
|
* - the object being traversed |
|
* |
|
* Properties that are added after the call to `mapObject` will not be visited |
|
* by `callback`. If the values of existing properties are changed, the value |
|
* passed to `callback` will be the value at the time `mapObject` visits them. |
|
* Properties that are deleted before being visited are not visited. |
|
* |
|
* @grep function objectMap() |
|
* @grep function objMap() |
|
* |
|
* @param {?object} object |
|
* @param {function} callback |
|
* @param {*} context |
|
* @return {?object} |
|
*/ |
|
function mapObject(object, callback, context) { |
|
if (!object) { |
|
return null; |
|
} |
|
var result = {}; |
|
for (var name in object) { |
|
if (hasOwnProperty.call(object, name)) { |
|
result[name] = callback.call(context, object[name], name, object); |
|
} |
|
} |
|
return result; |
|
} |
|
|
|
module.exports = mapObject;
|
|
|