sách gpt4 ai đã đi

Lọc json tương tự như toán tử "like" của mysql - Stack Overflow

In lại 作者:行者123 更新时间:2023-11-30 16:01:40 29 4
mua khóa gpt4 Nike

我想过滤我的 json,我尝试使用通配符“%”模拟简单的 mysql 运算符“like”,但使用一个……某种“技巧”。

我们有一些元素:

var items =
[
{id: 1,name: "Breaking Bad"},
{id: 2,name : "Bates Motel"}
]

当我将 PHP 与 MySQL 结合使用时,我将用户输入中的每个空格替换为“%”。因此,当用户键入“b ba”时,查询如下所示:

$this->db->query("SELECT * FROM items WHERE name LIKE '%b%ba% ");

用户获得项目:“Breaking Bad”。我想用 javascript 和 json 模拟相同的行为。

我最接近的实现是这样的:

this.search = function() {
var query = $.trim($('.player-search').val())
query = query.toUpperCase()

$.grep(that.items, function(v) {
if(that.filter(v.name,query) === true) {
$('.player-serial[data-id="'+v.id+'"]').fadeIn(200)
} khác {
$('.player-serial[data-id="'+v.id+'"]').fadeOut(200)
}
})
}

this.filter = function(word,query) {
var tmp = query.toUpperCase().split(" "),
n = tmp.length,
i = 0

for(var k in tmp) {
word.toUpperCase().indexOf(tmp[k]) >= 0 && ++i
}

return (i == n) ? true : false
}

这种方式有一个可怕的错误,当用户键入“b ba”时,用户会得到“Breaking Bad”和“Bates Motel”,因为“Bates”一词包含“b”和“ba”。

在我尝试再次编写它之前,我想问一下是否有更好/更智能的方法来根据需要过滤 json?可能是我要重新发明轮子吧。

1 Câu trả lời

Bạn có thể sử dụng$.grep(), String.prototype.match(), Array.prototype.every(), String.prototype.slice()

var items = [{
id: 1,
name: "Breaking Bad"
}, {
id: 2,
name: "Bates Motel"
}];
var query = "b ba";
var res = $.grep(items, function(v) {
// if space character included in query match first word to
// first word of `v.name`, last word to last word in `v.name`
if (/\s/.test(query)) {
var curr = v.name.match(/\w+/g).map(function(_q) {
return _q.toLowerCase()
});
var q = query.match(/\w+/g);
if (q.every(function(val, index) {
return val === curr[index].slice(0, val.length)
})) return true
} khác {
if (q.toLowerCase() === v.name.toLowerCase().slice(0, q.length)) {
trả về đúng
}
}
});

console.log(res[0])

关于javascript - 过滤json类似mysql "like"操作符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37635900/

29 4 0
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com