javascript - 使用 lodash 从与正则表达式匹配的数组中获取值

标签 javascript json regex lodash

我的 json 数组:

[{"id":"7","name":"hello"},{"id":"7","name":"shan"},{"id":"7","name":"john"}
{"id":"7","name":"hello"}]

我想获得一个新数组,该数组与 name 上以字母开头的正则表达式相匹配。

我正在使用 regexp但我不知道如何实现它。

这是我的代码:

var newitem=_.filter(result,item=>item.name='hello');
 console.log(newitem);

但它只返回与 name 的严格匹配。

请帮我修改上面的内容,这样结果就是一个描述的新数组。

预期输出

当用户输入字母h时,它只显示行

{"id":"7","name":"hello"}

最佳答案

要检查 name 是否以字符串开头,您可以使用 RegExp#test 和正则表达式。

var newItem = _.filter(result, obj => /^[a-zA-Z]/.test(obj.name));

正则表达式 ^[a-zA-Z] 将检查名称是否以字母开头。

var arr = [{
    "id": "7",
    "name": "hello"
}, {
    "id": "7",
    "name": "shan"
}, {
    "id": "7",
    "name": "jhon"
}, {
    "id": "7",
    "name": "hello"
}, {
    id: 10,
    name: '$haun'
}];

var newItem = _.filter(arr, obj => /^[a-zA-Z]/.test(obj.name));
console.log(newItem);
<script src="https://cdnjs.com/libraries/lodash.js/"></script>

可以使用 Array#filter 编写相同的代码。

arr.filter(obj => /^[a-zA-Z]/.test(obj.name));

var arr = [{
    "id": "7",
    "name": "hello"
}, {
    "id": "7",
    "name": "*shan"
}, {
    "id": "7",
    "name": "jhon"
}, {
    "id": "7",
    "name": "hello"
}, {
    id: 10,
    name: '$haun'
}];

var newItem = arr.filter(obj => /^[a-zA-Z]/.test(obj.name));
console.log(newItem);
document.body.innerHTML = '<pre>' + JSON.stringify(newItem, 0, 4) + '</pre>';


更新:

when a usertype letter h it shows only the row

你可以使用

_.filter(result, obj => /^h/.test(obj.name));

使用i-不区分大小写的标志来匹配字母表而不考虑大小写。这将同时匹配 hH

关于javascript - 使用 lodash 从与正则表达式匹配的数组中获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35497598/

相关文章:

Javascript http请求-需要调用并存储结果进行处理

javascript - jquery悬停不显示链接

javascript - 如何将 Django 表单与 Ajax 集成?

json - 可以跳过 json 对象表中的第一个属性吗?

regex - SED Unix 命令,需要帮助将 .less 文件更改为 style.css

javascript - 将一组重叠范围划分为一组非重叠范围

javascript - Node 中的 jstoxml 转换器模块未以正确的结构解析数据

java - 使用 JSONObject 解析 json

java - 正则表达式 删除特定字符串之后/除了存在的所有内容

regex - 使用 SED 删除不匹配的行