【发布时间】:2016-05-09 23:49:26
【问题描述】:
我有一个对象数组,每个对象都包含一个属性tags,其中包含一个字符串数组
let item = {
tags: [String],
name: String
};
let queue = [item1, item2, ...];
我想知道查找包含特定tag(s) 的所有项目。蛮力将是 2 个 for 循环:
function findTags(tags) {
let results = [];
queue.forEach(function (item) {
tags.forEach(function (tag) {
if (item.tags.indexOf(tag) !== -1) {
results.push(item);
}
});
});
return results;
}
有比O(N^2)更好的方式吗?
【问题讨论】:
-
不要在内循环中使用 forEach(),因为当你找到匹配的标签时,没有办法提前跳出循环。另外我认为if语句应该是
if (tags.indexOf(tag) !== -1)。 -
我们需要查看对象字面量,因为一切都取决于数据结构和类型。
标签: javascript arrays