微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决获取对象数组中javascript对象的键名

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

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

这是我的条目^。我运行 Loadash GroupBy 来对所有类别进行分组。

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

这里的代码片段返回如下:

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

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

我需要运行一个带有嵌入的 Reduce 的连续 Map 以通过每个条目值的总和将数组减少到一个整数。

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 的文档说:

通过运行集合中的每个元素来创建一个值数组 迭代器。迭代器使用三个参数调用:(value,索引|键,集合)。

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

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。