我的 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
-不区分大小写的标志来匹配字母表而不考虑大小写。这将同时匹配 h
和 H
。
关于javascript - 使用 lodash 从与正则表达式匹配的数组中获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35497598/