提问者:小点点

Javascript匹配关键字传递动态数据


下面是一个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等一大堆现有属性。


共2个答案

匿名用户

若要在正则表达式中使用变量,请使用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));