Mow*_*zer 2 javascript javascript-objects lodash
我想使用 Lodashtrue在对象的任何值中包含部分字符串的匹配项时返回。我已经尝试过_.includes如下。
const ob = {first: "Fred", last: "Flintstone",}
const search = "stone";
const result = _.includes(ob, search)
console.log(result); // false
Run Code Online (Sandbox Code Playgroud)
我还尝试过使用正则表达式而不是字符串作为搜索词。
const search = /stone/gi;
Run Code Online (Sandbox Code Playgroud)
两次都result返回false。我想result回来true。我怎样才能在 Lodash 中做到这一点?
您可以使用 lodash 的_.some()(适用于对象)和 lodash/vanilla include 来查找当前属性的值是否具有搜索字符串:
const includesValue = (val, obj) => _.some(obj, v => _.includes(v, val))\r\n\r\nconst obj = {first: "Fred", last: "Flintstone",}\r\nconst search = "stone";\r\nconst result = includesValue(search, obj)\r\n\r\nconsole.log(result); // trueRun Code Online (Sandbox Code Playgroud)\r\n<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.js"></script>Run Code Online (Sandbox Code Playgroud)\r\n还有 lodash/fp 版本:
\n\nconst includesValue = val => _.some(_.includes(val))\r\n\r\nconst obj = {first: "Fred", last: "Flintstone",}\r\nconst search = "stone";\r\nconst result = includesValue(search)(obj)\r\n\r\nconsole.log(result); // trueRun Code Online (Sandbox Code Playgroud)\r\n<script src=\'https://cdn.jsdelivr.net/g/lodash@4(lodash.min.js+lodash.fp.min.js)\'></script>Run Code Online (Sandbox Code Playgroud)\r\n要处理区分大小写和带有变音符号的字母,您可以使用_.deburr()(或这个答案 ),并将文本转换为小写:
const normalize = str => _.toLower(_.deburr(str))\r\n\r\nconst includesValue = (val, obj) => {\r\n const search = normalize(val)\r\n return _.some(obj, v => normalize(v).includes(search))\r\n}\r\n\r\nconst obj = {first: "Fred", last: "Flintston\xc3\xa9",}\r\nconst search = "Stone";\r\nconst result = includesValue(search, obj)\r\n\r\nconsole.log(result); // trueRun Code Online (Sandbox Code Playgroud)\r\n<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.js"></script>Run Code Online (Sandbox Code Playgroud)\r\n| 归档时间: |
|
| 查看次数: |
12550 次 |
| 最近记录: |