如何使用 Lodash 遍历对象数组并查找出现的次数和元素名称
How do I traverse an array of objects and find the number of times and element name occurs using Lodash
与我的另一个问题相关,图像是How do I get rid of PROTOTYPE in my new JSON Object from an Array?
我希望能够做到以下几点:
更进一步...
目前相同的 MARKET (name, displayName) 中的每一个都包含 1 到“n”个项目。
所以,我想计算有多少项目在内部或重复。
例如:
NAME: "IL" may have 300
NAME: "WA" may have 1000
NAME: "OR" may have 100
and so on.
在这些对象中,有 MARKET 这个词。市场是上面的:IL, WA, CA, 等等是 MARKETS 这样的:
[
{
ID: 1,
NAME: "SomeName1",
MARKET: "IL",
LOCATION: "6 Miles east"
},
{
ID: 2,
NAME: "SomeName2",
MARKET: "IL",
LOCATION: "36 Miles east"
},
{
ID: 3,
NAME: "SomeName3",
MARKET: "WA",
LOCATION: "3 Miles west"
},
{
ID: 4,
NAME: "SomeName4",
MARKET: "WA",
LOCATION: "33 Miles west"
},
{
ID: 5,
NAME: "SomeName5",
MARKET: "OR",
LOCATION: "23 Miles north"
},
...
]
我想为收到的 MAP 函数添加一个计数作为解决方案:
const newObj = newMarketArray.map(e => ({ name: e, displayName: e }));
因此当值出现在上图中时,我可以获得例如 WA、IL 和 OR 的出现次数。
最后的 JSON 应该有一个额外的元素:
displayName: WA,
name: WA,
count: 33
最后,我想对 JSON 对象的值进行排序,这可能非常简单。
更新:有人提出了 MAP
的问题
const newObj = newMarketArray.map(e => ({ name: e, displayName: e }));
为假。这不是真的。它 returns IMAGE 中的值。所以这肯定不是假的。
我所需要的只是计算出现 CA 的实例数,然后像这样放置它:
const newObj = newMarketArray.map(e => ({ name: e, displayName: e, count: somecount }));
仅供参考:newMarketArray 包含 3300 多个对象
如果我已经很明白你想要什么了:
newMarketArray = [
{
ID: 1,
NAME: "SomeName1",
MARKET: "IL",
LOCATION: "6 Miles east"
},
{
ID: 2,
NAME: "SomeName2",
MARKET: "IL",
LOCATION: "36 Miles east"
},
{
ID: 3,
NAME: "SomeName3",
MARKET: "WA",
LOCATION: "3 Miles west"
},
{
ID: 4,
NAME: "SomeName4",
MARKET: "WA",
LOCATION: "33 Miles west"
},
{
ID: 5,
NAME: "SomeName5",
MARKET: "OR",
LOCATION: "23 Miles north"
}
]
let objCount = newMarketArray.reduce((acc, obj) => {
acc[obj.MARKET] = (acc[obj.MARKET] || 0) + 1;
return acc;
}, {});
console.log(objCount);
let arrResult = Object.keys(objCount).map(k => ({'name': k, 'displayName': k, 'count': objCount[k] }));
console.log(arrResult)
之后,您可以根据需要对字典进行排序(按您想要的值..)
与我的另一个问题相关,图像是How do I get rid of PROTOTYPE in my new JSON Object from an Array?
我希望能够做到以下几点:
更进一步...
目前相同的 MARKET (name, displayName) 中的每一个都包含 1 到“n”个项目。
所以,我想计算有多少项目在内部或重复。
例如:
NAME: "IL" may have 300
NAME: "WA" may have 1000
NAME: "OR" may have 100
and so on.
在这些对象中,有 MARKET 这个词。市场是上面的:IL, WA, CA, 等等是 MARKETS 这样的:
[
{
ID: 1,
NAME: "SomeName1",
MARKET: "IL",
LOCATION: "6 Miles east"
},
{
ID: 2,
NAME: "SomeName2",
MARKET: "IL",
LOCATION: "36 Miles east"
},
{
ID: 3,
NAME: "SomeName3",
MARKET: "WA",
LOCATION: "3 Miles west"
},
{
ID: 4,
NAME: "SomeName4",
MARKET: "WA",
LOCATION: "33 Miles west"
},
{
ID: 5,
NAME: "SomeName5",
MARKET: "OR",
LOCATION: "23 Miles north"
},
...
]
我想为收到的 MAP 函数添加一个计数作为解决方案:
const newObj = newMarketArray.map(e => ({ name: e, displayName: e }));
因此当值出现在上图中时,我可以获得例如 WA、IL 和 OR 的出现次数。
最后的 JSON 应该有一个额外的元素:
displayName: WA,
name: WA,
count: 33
最后,我想对 JSON 对象的值进行排序,这可能非常简单。
更新:有人提出了 MAP
的问题const newObj = newMarketArray.map(e => ({ name: e, displayName: e }));
为假。这不是真的。它 returns IMAGE 中的值。所以这肯定不是假的。
我所需要的只是计算出现 CA 的实例数,然后像这样放置它:
const newObj = newMarketArray.map(e => ({ name: e, displayName: e, count: somecount }));
仅供参考:newMarketArray 包含 3300 多个对象
如果我已经很明白你想要什么了:
newMarketArray = [
{
ID: 1,
NAME: "SomeName1",
MARKET: "IL",
LOCATION: "6 Miles east"
},
{
ID: 2,
NAME: "SomeName2",
MARKET: "IL",
LOCATION: "36 Miles east"
},
{
ID: 3,
NAME: "SomeName3",
MARKET: "WA",
LOCATION: "3 Miles west"
},
{
ID: 4,
NAME: "SomeName4",
MARKET: "WA",
LOCATION: "33 Miles west"
},
{
ID: 5,
NAME: "SomeName5",
MARKET: "OR",
LOCATION: "23 Miles north"
}
]
let objCount = newMarketArray.reduce((acc, obj) => {
acc[obj.MARKET] = (acc[obj.MARKET] || 0) + 1;
return acc;
}, {});
console.log(objCount);
let arrResult = Object.keys(objCount).map(k => ({'name': k, 'displayName': k, 'count': objCount[k] }));
console.log(arrResult)
之后,您可以根据需要对字典进行排序(按您想要的值..)