ฉันกำลังมองหาวิธีที่มีประสิทธิภาพในการลบองค์ประกอบทั้งหมดออกจากอาร์เรย์ JavaScript หากมีอยู่ในอาร์เรย์อื่น
// If I have this array:
var myArray = ['a', 'b', 'c', 'd', 'e', 'f', 'g'];
// and this one:
var toRemove = ['b', 'c', 'g'];
ฉันต้องการทำงานกับ myArray เพื่อปล่อยให้อยู่ในสถานะนี้: ['a', 'd', 'e', 'f']
ด้วย jQuery ฉันใช้grep()
และใช้inArray()
งานได้ดี:
myArray = $.grep(myArray, function(value) {
return $.inArray(value, toRemove) < 0;
});
มีวิธีจาวาสคริปต์ที่บริสุทธิ์ในการทำเช่นนี้โดยไม่ต้องวนและต่อ?
.filter()
คุณจะไม่ใช้วิธีการประเภทการทำงานเช่น แต่คุณจะใช้for
ลูปแทน คุณสามารถหลีกเลี่ยงได้.splice()
หากไม่จำเป็นต้องรักษาคำสั่งซื้อดั้งเดิมไว้ หรือมีวิธีที่จะทำให้.splice()
มีประสิทธิภาพมากขึ้นถ้าคุณคิดว่าจะมีหลายรายการที่จะลบ