Javascript数据模型,交叉引用

Javascript数据模型,交叉引用,javascript,underscore.js,Javascript,Underscore.js,我收到以下数据结构: { 8: ['red', 'green', 'blue'] } { 10: ['red', 'green'] } { 12: ['green', 'blue'] } 根据这些数据,我需要能够创建一个对象模型,该模型将允许我确定给定尺寸下哪些颜色可用,但反过来,也可以确定给定颜色下哪些尺寸可用 我知道我可以创建两个数据集和两个函数来进行查找,但是有没有更优雅的方法来使用下划线这样的东西呢?假设您使用的是下划线或lodash* var a = [ { 8: ['red

我收到以下数据结构:

{ 8: ['red', 'green', 'blue'] }
{ 10: ['red', 'green'] }
{ 12: ['green', 'blue'] }
根据这些数据,我需要能够创建一个对象模型,该模型将允许我确定给定尺寸下哪些颜色可用,但反过来,也可以确定给定颜色下哪些尺寸可用


我知道我可以创建两个数据集和两个函数来进行查找,但是有没有更优雅的方法来使用下划线这样的东西呢?

假设您使用的是下划线或lodash*

var a = [
    { 8: ['red', 'green', 'blue'] },
    { 10: ['red', 'green'] },
    { 12: ['green', 'blue'] }
];
function getIndicesByColor(a,color){
    var list = _.assign.apply(this,a);
    return _.select(_.keys(list),function(v,k,l){return _.contains(list[v],color)})
}
getIndicesByColor(a,'red') // ["8", "10"]
getIndicesByColor(a,'green') // ["8", "10", "12"]    
getIndicesByColor(a,'blue') // ["8", "12"]

在它的当前形式中,它不是一个单一的JS结构。这些行中的每一行都是数组元素吗?或者它们应该是同一对象的三个属性?或者…?很抱歉,我收到了一个json结果,其中的对象与上面的示例类似。假设一个数组,我看不出将一个对象解析为两个查找对象有任何不雅之处。但是,这是一个非常棘手的数据结构,您必须使用它。你对源数据有控制权吗?从字符串解析比将其作为一个对象数组处理要简单得多,每个对象只包含一个任意命名的属性。@gilly3我很乐意使用两个查找对象,但你知道代码检查等的过程。你总是想知道是否有更好的方法,这里有很多有才华的人,但我该怎么做呢?例如,找出可用的蓝色尺码!