下面是一个JSON数组。
let data = {
"list": [
{ "name": "my Name", "id": 12, "type": "car owner" },
{ "name": "my Name2", "id": 13, "type": "car owner2" },
{ "name": "my Name4", "id": 14, "type": "car owner3" },
{ "name": "my Name4", "id": 15, "type": "car owner5" }
]
}
现在,由于我想访问上面JSON列表中的“name”
,下面是我的方法。
console.log(data.list.filter(record => record.name.match(/my Name2.*/)));
现在我想在/MyName2.*/
之间传递一个动态变量。 假设我想像这样传递letstr='myname'
,/str.*/
怎么可能呢?我只想获得“name”
的列表数组,而不是id和type等一大堆现有属性。
若要在正则表达式中使用变量,请使用regexp
构造函数。 然后可以使用map
仅保留名称:
null
/* Same data as yours */ const data = {list:[{name:"my Name",id:12,type:"car owner"},{name:"my Name2",id:13,type:"car owner2"},{name:"my Name4",id:14,type:"car owner3"},{name:"my Name4",id:15,type:"car owner5"}]};
const str = "my Name2";
const regex = new RegExp(str + ".*");
const res = data.list
.filter(record => record.name.match(regex))
.map(record => record.name);
console.log(res);
let data = {
"list": [
{ "name": "my Name", "id": 12, "type": "car owner" },
{ "name": "my Name2", "id": 13, "type": "car owner2" },
{ "name": "my Name4", "id": 14, "type": "car owner3" },
{ "name": "my Name4", "id": 15, "type": "car owner5" }
]
}
let input='my Name'
console.log(data.list.filter(record => record.name===input).map(record=>record.name));