gpt4 book ai didi

javascript - 按单词对 JavaScript 数组进行排序

转载 作者:行者123 更新时间:2023-12-03 10:12:44 25 4
gpt4 key购买 nike

我有一个包含多个层的对象数组。它看起来像这样:

var array = [
{
fields: { title: "Some title here" },
sys: { id: "1234" }
},
{
fields: { title: "Another one there" },
sys: { id: "13456" }
},
{
fields: { title: "Final example" },
sys: { id: "234" }
},
{
fields: { title: "Most final thing" },
sys: { id: "4665" }
},
];

现在我想根据 fields.title 中是否存在文本对数组进行排序。例如,我有短语“最终搜索”。这需要对数组进行排序,以便当前的 array[2] 和 array[3] 移动到顶部位置,因为它们包含单词“final”。

排序需要包含多个单词。因此,如果我使用短语“final example”,则 array[2] 将首先出现,因为它包含两个单词,然后是仅包含“final”的 array[3] .

这可能吗?如何实现?

最佳答案

是的,这是可能的。

您可以按空格字符拆分字符串,计算 2 个生成的数组的交集并将其用于排序。遵循相同逻辑并且速度更快的另一个选项是使用正则表达式和 String.prototype.match 方法,例如:

function finder(input) {
var reg = new RegExp(input.trim().split(' ').join('|'), 'gi');
return function(el) {
var m = el.fields.title.match(reg);
return m ? m.length : -1;
}
}

function sortBy(arr, input) {
var find = finder(input);
return arr.sort(function (a, b) {
return find(a) < find(b);
});
}

sortBy(array, "user input");

Here is a demo.

关于javascript - 按单词对 JavaScript 数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30034637/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com