เมื่อพิจารณาจากโหนดสุดท้ายของรายการที่เชื่อมโยงเดี่ยว เราจะค้นหาโหนดหลักได้อย่างไร

เมื่อพิจารณาจากโหนดสุดท้ายของรายการที่ถูกลิงก์เดี่ยว เราจะค้นหาโหนดหลักได้อย่างไร

สมมติว่าให้ JSON:

{ "id": "A", "ถัดไป": "B" }, { "id": "B", "ถัดไป": "C" } { "id": "C", "ถัดไป": "D " } { "id": "D", "ถัดไป": null }

ตอนนี้สมมติว่าด้านบนไม่ได้เรียงลำดับ และเราจำเป็นต้องหาองค์ประกอบ HEAD 'A'


person Sunil Gollapinni    schedule 18.04.2018    source แหล่งที่มา


คำตอบ (1)


คุณสามารถใช้ Array.prototype.find เพื่อค้นหาองค์ประกอบที่ id ไม่ใช่ค่า next ของวัตถุอื่นในรายการ สมมติว่ารายการเชื่อมโยงเดี่ยวที่ไม่ว่างเปล่าที่ถูกต้องจะต้องมีองค์ประกอบเดียวที่ตรงตามเงื่อนไขนั้น (ส่วนหัว) หากรายการว่างเปล่า head จะได้รับการกำหนดค่า undefined

const json = '[{"id": "A", "next": "B"}, {"id": "B", "next": "C"},{"id": "C", "next": "D"},{"id": "D", "next": null}]';
const objects = JSON.parse(json);

const head = objects.find( a => ! objects.find( b => a.id === b.next ) );

console.log( head );

person Paul    schedule 18.04.2018
comment
เมื่อฉันโพสต์โพสต์นี้ แม้แต่ฉันก็คิดในบรรทัดเดียวกันโดยที่ head node จะไม่ปรากฏในแอตทริบิวต์ถัดไป ขอบคุณสำหรับคำตอบที่รวดเร็ว - person Sunil Gollapinni; 18.04.2018
comment
@Paulpro ! ทำงานอย่างไรในเรื่องนี้ เหตุใดจึงไม่ทำงานโดยใช้ objects.forEach(...); ฉันไม่พบสิ่งใดเกี่ยวกับเรื่องนี้ใน Array.prototype.find - person Bee; 18.04.2018
comment
@Paulpro ด้วยเหตุผลบางอย่างสิ่งนี้ทำให้ฉันสับสน คุณแน่ใจหรือว่าตรวจสอบ องค์ประกอบเดียวที่ id ไม่ใช่ค่า next ของวัตถุอื่นในรายการ สำหรับฉันดูเหมือนว่ามันจะตรวจสอบองค์ประกอบแรกเพียงเพราะไม่มี id เป็น next ในวัตถุใด ๆ ของรายการ - person Bee; 18.04.2018
comment
@DavidMichaelHuber คุณพูดถูกซึ่งเป็นสาเหตุที่คำตอบของฉันเริ่มต้นด้วยการสมมติรายการที่ถูกต้อง ฉันควรจะขยายสิ่งนั้นเป็นสมมติว่ารายการเชื่อมโยงเดี่ยวที่ถูกต้อง องค์ประกอบดังกล่าวมีได้เพียงองค์ประกอบเดียวเท่านั้นและต้องมีองค์ประกอบเดียวเท่านั้น ดังนั้นองค์ประกอบแรกที่ตรงตามเงื่อนไขจึงเหมือนกับองค์ประกอบเดียวที่ตรงตามเงื่อนไข - person Paul; 18.04.2018
comment
@DavidMichaelHuber ฉันเปลี่ยนคำตอบของฉันใหม่ - person Paul; 18.04.2018
comment
@Paulpro ขอบคุณมากสำหรับการล้างข้อมูลนี้! มันทำให้ฉันสับสนจริงๆ ที่ความเข้าใจของฉันในคำอธิบายของคุณไม่ตรงกับความเข้าใจของฉันในรหัสที่คุณให้มา - person Bee; 18.04.2018
comment
ไม่มีปัญหา @DavidMichaelHuber ขออภัยสำหรับความสับสนในช่วงแรก - person Paul; 19.04.2018