Rumah > Soal Jawab > teks badan
Ia mungkin agak berbelit-belit, tetapi spesifikasinya adalah seperti ini. Data diterima daripada antara muka, dan strukturnya lebih kurang seperti ini:
[
{
id: '1',
name: '',
child: [
{id: '5',
name: 'aaa',
child: [
{
id: '1',
name: 'aaa',
child: [
{
id: '1',
name: 'aaa',
child: [
]
}
]
}
]
}
]
},
{
id: '2',
name: '',
child: [
]
}
]
Setiap bahagian data dalam setiap lapisan mempunyai ID bebas, kemudian terdapat medan anak sepadan dengan lapisan kedua data, dan lapisan kedua data juga mempunyai medan anak sepadan dengan lapisan ketiga data, dsb. .
Adakah terdapat cara yang lebih cekap untuk mendapatkan nama yang sepadan daripada data pokok ini melalui id yang ditentukan? Mencari fungsi pembalut
曾经蜡笔没有小新2017-05-19 10:13:14
Saya menulis demo berdasarkan permintaan anda dan sampel data yang anda berikan. Saya tidak tahu sama ada ia memenuhi keperluan anda. Kembalikan objek semasa melalui id yang ditentukan
var data = 你的数据样本;
var Result;
function demo( data, id ) {
for (var i = 0; i < data.length; i++) {
if ( data[ i ].id == id ) {
Result = data[ i ];
break;
}else if ( data[ i ].child.length && !Result ) {
demo( data[ i ].child, id );
};
};
return Result;
}
console.log(demo( data, 3 ));
Hasil jalankan
Nota: demo( data, id )
中的 id
mestilah unik
过去多啦不再A梦2017-05-19 10:13:14
Cara yang betul: Rekursi;
Cara yang salah: Selepas objek JSON.Stringify, selepas memadankan "id":"xx" dengan ungkapan biasa, dapatkan rentetan pertama antara "nama:" dan ","