Javascript 数据模型,交叉引用

标签 javascript underscore.js

我收到以下数据结构:

{ 8: ['red', 'green', 'blue'] }
{ 10: ['red', 'green'] }
{ 12: ['green', 'blue'] }

根据这些数据,我需要能够创建一个对象模型,使我能够确定给定尺寸有哪些颜色可用,反之亦然,给定颜色有哪些尺寸可用。

我知道我可以创建两个数据集和两个函数来进行查找,但是有没有更优雅的方法来使用 UnderscoreJS 之类的东西来做到这一点?

最佳答案

假设您使用下划线或 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"]

关于Javascript 数据模型,交叉引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14168408/

相关文章:

javascript - 我想创建一个简单的输入框,然后在您键入时计算 80%,但不使用表单

javascript - 从方法返回全局变量

javascript - css 变换矩阵图像不保持相同的位置

javascript - 计算从现在到第二天的精确小时之间的剩余时间

javascript - 这个 while 循环在 Eloquent Javascript 中意味着什么?

javascript - 检查对象是否为空且具有未定义的属性

javascript - 下划线和 Mongoose : Use document as outer function's return value

javascript - 比较包含数组的对象

javascript - 如何更改与 Backbone 集合中的模型关联的几个元素的 css 属性?

javascript - 为什么我的代码在 underscore.js 下可以工作,但在我使用 Ramda.js 时却不行?