如何解决获取对象数组中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 举报,一经查实,本站将立刻删除。