获取对象数组中 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] );
我有一些 条目,这些条目有一个分配给它们的 类别,每个条目都有一个 数字值;
{
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] );