【发布时间】:2016-08-14 01:45:23
【问题描述】:
我在 JavaScript 中有一个数字数组的映射。我的目标是获取包含某个数字的值的键。我也对可能更有效的不同数据结构持开放态度。
let bookCategory = {
"fantasy": [10064, 10066, 10071],
"scifi": [10060, 10037, 10061],
"history": [10001, 10003, 10004, 10005],
"biography": [10032, 10006, 10002, 10028, 10009, 10030, 100031],
"educational": [10025]
};
每个数字只会出现一次,但每个数组可以包含近百个数字,并且可能会从那里大幅增长。数组可能是不可变的,因为我的数据是静态的。
现在我有这个,但它似乎效率不高。
let category;
let keys = _.keys(categories);
let theNumber = 10032;
for(let j = 0; j < keys.length; j++) {
if(_.includes(categories[keys[j]], theNumber)) {
category = keys[j];
break;
}
}
【问题讨论】:
-
10001和300的输出应该是什么? -
@SalvadorDali 这些数字不在任何数组中,因此类别将保持为
undefined。 -
如果它们不同 - 创建从值到类别的映射。
-
一个数字可以属于多个类别吗?
-
@NinaScholz 不。如果有的话,每个数字只会出现一次。
标签: javascript arrays algorithm