获取对象数组中 javascript 个对象的键名

Get key name of a javascript object in an array of objects

我有一些 条目,这些条目有一个分配给它们的 类别,每个条目都有一个 数字值

{
   category: "cat1",
   value: -100
}

这是我的参赛作品^。我 运行 一个 Loadash GroupBy 来对所有类别进行分组。

const groups = _.groupBy(dataSource, (entry) => entry.category);

这里的片段 returns 像这样:

{
    "cat1": [
        {
            category: "cat1",
            value: -100
        },
        {
            category: "cat1",
            value: +10
        },  
    ],
    "cat2": [
        {
             category: "cat2",
             value: -100
        },
        {
             category: "cat2",
             value: +40
        },
        //and so on...
}

键是 类别 名称。对象是相关条目。

我需要 运行 一个连续的 Map 和一个嵌入的 Reduce 来通过求和将数组缩减为整数每个条目的值。

const categoryValues = _.map(groups, (element) => {
    return {
        categoryName: ???????, 
        //*I DONT KNOW WHAT GOES HERE ^, 
        //I NEED THE NAME OF THE CATEGORY TO BE HERE*
        categoryValue: _.reduce(element,(acc, el) => el.value,0),
    };
});

那是因为我的图表 api 需要他的数据集数组由这样的对象组成:

{
   "categoryName": "cat1", //*THIS IS MISSING*
   "categoryValue": 999
}

如何访问每个数组的键名?我需要知道类别是如何命名的,以便图表显示它的名称。

我打问号的地方需要写什么?

您可以从回调函数的第二个参数中获取类别名称。此回调函数由 lodash 库调用,当它调用 map 函数时有 3 个参数(值、键、集合)。 map

const categoryValues = _.map(groups, (element, name) => {
  return {
    categoryName: name, //I DONT KNOW WHAT GOES HERE, I NEED THE NAME OF THE CATEGORY TO BE HERE*
    categoryValue: _.reduce(element, (acc, el) => el.value, 0),
  };
});

map 的文档说:

Creates an array of values by running each element in collection thru iteratee. The iteratee is invoked with three arguments: (value, index|key, collection).

如您所见,传递给迭代器的第二个参数是集合中的原始键。因此,只需向迭代器添加另一个参数并使用它:

const categoryValues = _.map(groups, (element, name) => {
    return {
        categoryName: name,
        categoryValue: _.reduce(element,(acc, el) => el.value,0),
    };
});

// this is the simple way.

var arr = {
  iamkeysA : [1,2,3],
  iamkeysB : [4,5,6]
}

var keys_ = Object.keys(arr); // now you get the list of keys name.

console.log( keys_[0] );
console.log( keys_[1] );