在处理来自数据库的数据时,我们经常会得到一些东西,由于数据库的限制,这些东西可以(唯一地)被复合索引索引。但是,indexBy
似乎不适用于复合指数,或者是吗?
x
给定一个包含具有a
和属性的对象的数组b
,我想要一个字典字典,其中包含 的所有对象,分别由和x
索引。例如:a
b
var x = [
{
a: 1,
b: 11,
c: 101
},
{
a: 2,
b: 11,
c: 101
},
{
a: 1,
b: 11,
c: 102
},
{
a: 1,
b: 14,
c: 102
},
];
// index x by a, then by b, then by c
var byABC = _.compoundIndexBy(x, ['a', 'b', 'c']);
// there are two items in `x` with a = 1 and b = 11
console.assert(_.size(byABC[1][11]) == 2, 'Something went wrong...');
// display result
console.log(byABC);
byABC
现在看起来像这样:
{
1: {
11: {
101: {
a: 1,
b: 11,
c: 101
},
102: {
a: 1,
b: 11,
c: 102
}
},
14: {
102: {
a: 1,
b: 14,
c: 102
}
},
}
2: {
11:{
101: {
a: 2,
b: 11,
c: 101
}
}
}
}
这个小提琴演示了这个compoundexIndexBy
功能。我的工作是徒劳的(因为Lo-Dash实际上确实支持复合指数),还是至少可以改进?