【发布时间】:2017-06-14 14:32:23
【问题描述】:
很抱歉,标题很长的问题不知道如何正确地提出我的问题。
所以这就是问题所在,我有一个存储对象的数组,在这些对象中还有另一个带有键标签的数组,它是一个用标签填充的数组。
对象:
var arr = new Array;
arr[0] = {
"like": 0,
"dislike": 0,
"answer": "body",
"tags" : ["offline", "facebook"],
"comments" : []
};
arr[1] = {
"like": 0,
"dislike": 0,
"answer": "body",
"tags" : ["school", "online"],
"comments" : []
};
arr[2] = {
"like": 0,
"dislike": 0,
"answer": "body",
"tags" : ["school", "offline"],
"comments" : []
};
[0]、[1] 索引表示和 ID,但这在这里并不重要。
问题是当我尝试过滤它时(我知道它只尝试过滤 arr[0] atm 但我会编写一个循环,以便它遍历所有索引):
var toFind = "offline";
var filtered = arr[0].filter(function(el) {
return el.tags === toFind;
});
console.log(filtered);
它说 arr[0].filter 不是一个函数,但不知道为什么它认为 arr[0] 应该作为一个函数考虑。
当我删除 [0] 时,它会返回一个空白数组...
所以我的问题是如何让 .filter 函数根据标签数组中的标签返回完整的对象。因此,如果我搜索标签“学校”,它会返回 arr[1] 和 arr[2],即完整的对象。
希望我的问题非常清楚,并且我提供了足够的信息。如果你们需要更多信息,请随时向我索取。或者如果你想让我澄清一些事情,请问:)
希望大家能帮帮我!
【问题讨论】:
-
arr.filter(x => x.tags.includes(toFind)) -
Object.prototype 没有 filter() 方法,这是您使用 arr[0] 访问的方法。您只想过滤 arr 本身
-
谢谢大家,感谢所有快速回复,它现在可以工作了!我使用了dgeare的解决方案!它创造了奇迹:)
标签: javascript arrays object filter