使用不带下划线的地图重新格式化对象

Reformat object with map without underscore

我有对象

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 函数仅适用于数组。

我怎样才能得到相同的结果?

试试这个

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));

您可以使用 prototype.

为对象赋予 map 功能
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
    };
  });
}