Rumah > Soal Jawab > teks badan
Cara mencari data json dengan cepat
Seperti gambar di bawah, jika id diketahui, cari nilai nama
世界只因有你2017-05-18 10:49:13
Andaikan data asal anda seperti ini:
var arr = [{
id:1,
name:'a'
},{
id:2,
name:'b'
}];
Kini anda boleh menukar format data pada satu masa kepada:
var obj = {};
arr.forEach(function (v,i) {
obj[v.id] = v;
});
obj = {
1:{
id:1,
name:'a',
},
2:{
id:2,
name:'b'
}
};
Kemudian anda boleh dapatkan nama terus berdasarkan id
obj[id].name
Malah, kecekapan di atas masih agak rendah.
Sekarang ia telah digelung, terus pilih medan yang sepadan daripada gelung
function getNameById(id) {
var name = '';
arr.forEach(function (v,i) {
if (v.id==id) {
name = v.name;
console.log(i);
return;
}
});
return name;
}
Perbezaan antara dua kaedah di atas ialah jika anda terus mendapat nilai berulang kali, pilih kaedah pertama, kerana anda hanya perlu mengulung sekali, dan tidak perlu mengulang lagi kemudian.
Kaedah kedua memerlukan peredaran semula setiap kali anda mendapatkannya
ringa_lee2017-05-18 10:49:13
Saya bersetuju dengan kenyataan di atas dan menukar struktur data. Tukar id kepada kunci. Tukar perkara lain kepada nilai Jika anda tidak memerlukan apa-apa lagi, anda boleh terus menukar nama kepada nilai
.过去多啦不再A梦2017-05-18 10:49:13
fn(id) {
return arr.filter(o => o.id === id)[0].name; // id一定有对应值的情况
}