使用没有下划线的地图重新格式化对象

时间:2015-10-21 14:22:42

标签: javascript underscore.js

我有一个对象

myObject = {
  1010: "Some label",
  1020: "Another label",
}

我正在使用_.map这样的

var generateOptions = function ( object ) {
  return _.map( object, function( value, key ) {
    return {
      value: key,
      label: key + ' - ' + value
    };
  } );
}

过去常常使用下划线_.map,但我想使用内置函数map。我试过了

var generateOptions = function ( object ) {
  return object.map( function( value, key ) {
    return {
      value: key,
      label: key + ' - ' + value
    };
  } );
}

但似乎map函数仅适用于数组。

我可以做些什么来获得相同的结果?

2 个答案:

答案 0 :(得分:1)

试试这个



var myObject = {
  1010: "Some label",
  1020: "Another label",
};


var generateOptions = function ( object ) {
  return Object.keys(object).map( function( key ) {
    return {
    	value: key,
      	label: key + ' - ' + object[key]
    };
  });
}

console.log(generateOptions(myObject));




答案 1 :(得分:1)

您可以使用prototype为对象提供Object.prototype.map = function(callback) { var thisObj = this; return Object.keys(thisObj).map(function(key) { return { key: key, value: thisObj[key] }; }).map(callback); } 功能。

map

这将允许您在任何对象上调用var generateOptions = function ( object ) { return object.map(function( keyValue ) { return { value: keyValue.key, label: keyValue.key + ' - ' + keyValue.value }; }); } 并将其视为键值对数组。

在你的情况下,它将是:

{{1}}