反向查找对象与数组

生命值。

假设我有这样的物体

resourceMap = {
    "a": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
    "b": [11, 12],
    "c": [21, 23],
    "d": [54, 55, 56, 57, 510]
};

找出是否resourceId = 21可能的最佳方法"c"什么?

我们不知道键名或键数。它只匹配一次:含义21仅属于一个键"c"

我正在考虑遍历所有键并进行操作indexOf(),但是我觉得它不够“优雅”。

我可以使用Underscore,但尽量避免使用Angular或jQuery或仅使用Javascript。

消费者

在JavaScript中为对象使用数字属性名称是完全可以接受的我们可以利用这个优势来构建第二个对象,该对象将所有内容反向映射。这将使查找便宜。

var reverseMap = {};
for(var propName in resourceMap)
{
    var numsArr = resourceMap[propName];
    numsArr.forEach(function(num){
        reverseMap[num]=propName;
    });
}
console.log(reverseMap[54]); //'d'

http://jsfiddle.net/y11sbgbv/

也可以按以下方式更“功能地”(例如,不使用副作用)来构建反向映射:

var reverseMap2 = Object.keys(resourceMap).reduce((acc, propName) =>          
  resourceMap[propName].reduce((a, num) => {
    a[num] = propName;
    return a;
  }, acc), {});

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

查找对象数组的索引

来自分类Dev

在对象数组内部查找对象

来自分类Dev

查找对象和数组之间的交集

来自分类Dev

了解在数组中查找对象

来自分类Dev

如何查找对象数组的类型

来自分类Dev

Lodash 嵌套查找对象到数组

来自分类Dev

在数组中查找对象

来自分类Dev

在数组上查找对象的索引

来自分类Dev

Javascript:在数组中查找对象的索引,不知道索引,仅查找对象

来自分类Dev

如何通过对象数组中的id查找对象?

来自分类Dev

如何查找对象数组并仍然保留对象属性?

来自分类Dev

如何通过对象数组中的id查找对象?

来自分类Dev

在对象数组中查找对象的索引

来自分类Dev

查找对象数组中对象键 VALUES 的频率

来自分类Dev

创建查询以在对象数组中查找对象

来自分类Dev

如何使用lodash在嵌套的对象数组中查找对象?

来自分类Dev

在数组数组中按 id 查找对象的索引

来自分类Dev

查找对象参考

来自分类Dev

通过嵌套数组中的match属性查找对象

来自分类Dev

使用Javascript / React.js查找对象的数组索引

来自分类Dev

Mongo查找对象内最长数组的查询

来自分类Dev

jsoncpp。通过匹配值在数组中查找对象

来自分类Dev

根据坐标在数组中查找对象

来自分类Dev

在postgres jsonb数组中查找对象的位置

来自分类Dev

NodeJS通过键的值在数组中查找对象

来自分类Dev

查找对象是否在Ruby中的数组中?

来自分类Dev

在原型Javascript数组中查找对象的索引

来自分类Dev

如何从ReactJS setState查找对象数组的长度?

来自分类Dev

在数组Ramda中按ID查找对象