Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Dynamic Programming: Trả về tất cả dữ liệu khớp trong JavaScript

Giả sử chúng ta có đối tượng JSON chứa thông tin vị trí các thành phố của một số quốc gia như sau:

const countryInfo = {    country: [{       name: "Bangladesh",       province: [{          name:"Dhaka",          city: [{             name:"Tangail",             lat: '11'          }, {             name:"Jamalpur",             lat: '12'          }]       }, {          name: "Khulna",          city: [{             name:"Jossore",             lat: '22'          }, {             name:"Tangail",             lat: '23'          }]       }, {          name: "Rajshahi",          city: [{             name:"Pabna",             lat: '33'          }, {             name:"Rangpur",             lat: '33'          }]       }]    },{       name: "India",       province: [{          name:"West Bengal",          city: [{             name:"Calcutta",             lat: '111'          }, {             name:"Tangail",             lat: '112'          }]       }, {          name: "Uttar Pradesh",          city: [{             name:"Agra",             lat: '122'          }, {             name:"Tajmahal",             lat: '123'          }]       }, {          name: "Rajasthan",          city: [{             name:"Kanpur",             lat: '131'          }, {             name:"Jaypur",             lat: '132'          }]       }]    }] };

Chúng ta cần viết hàm JavaScript nhận đối tượng như vậy và một chuỗi tìm kiếm. Chúng ta tìm tất cả tên thành phố khớp với chuỗi tìm kiếm và trả về mảng tất cả đối tượng thành phố khớp với truy vấn.

Ví dụ

Mã cho việc này:

const countryInfo = {    country: [{       name: "Bangladesh",       province: [{          name:"Dhaka",          city: [{             name:"Tangail",             lat: '11'          }, {             name:"Jamalpur",             lat: '12'          }]       }, {          name: "Khulna",          city: [{             name:"Jossore",             lat: '22'          }, {             name:"Tangail",             lat: '23'          }]       }, {          name: "Rajshahi",          city: [{             name:"Pabna",             lat: '33'          }, {             name:"Rangpur",             lat: '33'          }]       }]    },{       name: "India",       province: [{          name:"West Bengal",          city: [{             name:"Calcutta",             lat: '111'          }, {             name:"Tangail",             lat: '112'          }]       }, {          name: "Uttar Pradesh",          city: [{             name:"Agra",             lat: '122'          }, {             name:"Tajmahal",             lat: '123'          }]       }, {          name: "Rajasthan",          city: [{             name:"Kanpur",             lat: '131'          }, {             name:"Jaypur",             lat: '132'          }]       }]    }] }; const searchForCity = (obj, query) => {    const cities = obj.country.reduce((acc, val) => {       val.province.forEach(el => {          el.city.forEach(elm => {             acc.push(elm);          });       });       return acc;    },[]);    const res = cities.filter(el => {       return el.name === query;    });    return res; }; console.log(searchForCity(countryInfo, 'Tangail'));

Đầu ra

Kết quả trên console:

[    { name: 'Tangail', lat: '11' },    { name: 'Tangail', lat: '23' },    { name: 'Tangail', lat: '112' } ]