我有一个计算列表,需要根据搜索字符串(如果存在)进行排序..
我正在尝试使用filter()来解决这个问题,但我失败了......有人可以看一下吗?
示例场景: 用户搜索“fryseren”。 this.searchtext =“fryseren”。应过滤掉JSON中的第二个元素。
计算属性
nluData() {
return orderby(this.$store.getters.nlujson.filter(item => {
if (this.searchtext != "") {
let searchstring = this.searchtext;
return item.entities.filter(function(sub) {
sub.value.toLowerCase() === searchstring.toLowerCase()
})
}
else {
return item.intent.toLowerCase() === this.selectedIntent.toLowerCase()
}
}), ['justCreated', 'intent', 'text'], ['asc', 'asc', 'asc'])
},
示例JSON(
{
"id": "fb18eee6-423e-475d-9077-c03dd4ffd80f",
"text": "Hvor lang holdbarhet har kyllingfilet i fryseren?",
"intent": "shelf_life",
"entities": [
{
"start": 25,
"end": 37,
"value": "kyllingfilet",
"entity": "ingredient"
},
{
"start": 40,
"end": 48,
"value": "fryseren",
"entity": "ingredient_placement"
},
{
"start": 10,
"end": 20,
"value": "holdbarhet",
"entity": "shelf_life"
}
],
"isSociety": false
},
{
"id": "1072392a-38dc-43f2-affe-74a4fde81bfd",
"text": "Hvor lang holdbarhet har ribbe i kjøleskapet? ",
"intent": "shelf_life",
"entities": [
{
"start": 33,
"end": 44,
"value": "kjøleskapet",
"entity": "ingredient_placement"
},
{
"start": 10,
"end": 20,
"value": "holdbarhet",
"entity": "shelf_life"
},
{
"start": 25,
"end": 30,
"value": "ribbe",
"entity": "ingredient"
}
],
"isSociety": false
},
答案 0 :(得分:2)
您的内部过滤器功能不会返回任何内容,因此它始终为false。在此行添加回报。
return sub.value.toLowerCase() === searchstring.toLowerCase()