ใน Javascript ฉันกำลังพยายามหาค่าตัวเลขเริ่มต้นและนับองค์ประกอบที่อยู่ภายใน ตามหลักการแล้วผลลัพธ์จะเป็นสองอาร์เรย์ใหม่อันแรกที่ระบุองค์ประกอบที่ไม่ซ้ำกันและที่สองมีจำนวนครั้งที่แต่ละองค์ประกอบเกิดขึ้น อย่างไรก็ตามฉันเปิดให้คำแนะนำเกี่ยวกับรูปแบบของการส่งออก
ตัวอย่างเช่นถ้าอาร์เรย์เริ่มต้นคือ:
5, 5, 5, 2, 2, 2, 2, 2, 9, 4
จากนั้นจะสร้างอาร์เรย์ใหม่สองอาร์เรย์ ครั้งแรกจะมีชื่อขององค์ประกอบที่ไม่ซ้ำกันแต่ละ:
5, 2, 9, 4
ที่สองจะมีจำนวนครั้งที่องค์ประกอบที่เกิดขึ้นในอาร์เรย์เริ่มต้น:
3, 5, 1, 1
เนื่องจากหมายเลข 5 เกิดขึ้นสามครั้งในอาเรย์เริ่มต้นหมายเลข 2 จึงเกิดขึ้นห้าครั้งและ 9 และ 4 ทั้งคู่ปรากฏขึ้นหนึ่งครั้ง
ฉันค้นหาวิธีการแก้ปัญหามากมาย แต่ดูเหมือนว่าจะไม่มีอะไรทำงานได้และทุกอย่างที่ฉันลองด้วยตัวเองทำให้ซับซ้อนขึ้นอย่างน่าขัน ความช่วยเหลือใด ๆ ที่จะได้รับการชื่นชม!
ขอบคุณ :)
ramda.js
เพื่อให้บรรลุสิ่งนี้ได้อย่างง่ายดาย const ary = [5, 5, 5, 2, 2, 2, 2, 2, 9, 4]; R.countBy(r=> r)(ary)
arr.filter(x => x===5).length
จะกลับมา3
เพื่อระบุว่ามี '3' ห้าในอาร์เรย์
if (arr.indexOf(value) == arr.lastIndexOf(value))