gpt4 book ai didi

javascript - 使用 Lodash 在对象的任何属性值中查找部分字符串

转载 作者:行者123 更新时间:2023-11-30 11:04:13 27 4
gpt4 key购买 nike

我想使用 Lodash 返回 true 当一个对象在它的任何值中包含一个部分字符串的匹配项时。我已经尝试使用 _.includes 如下所示。

const ob = {first: "Fred", last: "Flintstone",}
const search = "stone";
const result = _.includes(ob, search)
console.log(result); // false

我也尝试过使用正则表达式而不是字符串作为搜索词。

const search = /stone/gi;

两次 result 都返回 false。我希望 result 返回 true。我如何在 Lodash 中执行此操作?

最佳答案

您可以使用 lodash 的 _.some()(它与对象一起使用),并且 lodash/vanilla 包含查找当前属性的值是否具有搜索字符串:

const includesValue = (val, obj) => _.some(obj, v => _.includes(v, val))

const obj = {first: "Fred", last: "Flintstone",}
const search = "stone";
const result = includesValue(search, obj)

console.log(result); // true
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.js"></script>

还有一个 lodash/fp 版本:

const includesValue = val => _.some(_.includes(val))

const obj = {first: "Fred", last: "Flintstone",}
const search = "stone";
const result = includesValue(search)(obj)

console.log(result); // true
<script src='https://cdn.jsdelivr.net/g/lodash@4(lodash.min.js+lodash.fp.min.js)'></script>

要处理区分大小写和带变音符号的字母,您可以使用 _.deburr()(或 this answer ),并将文本转换为小写:

const normalize = str => _.toLower(_.deburr(str))

const includesValue = (val, obj) => {
const search = normalize(val)
return _.some(obj, v => normalize(v).includes(search))
}

const obj = {first: "Fred", last: "Flintstoné",}
const search = "Stone";
const result = includesValue(search, obj)

console.log(result); // true
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.js"></script>

关于javascript - 使用 Lodash 在对象的任何属性值中查找部分字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56363264/

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