हमें एक फ़ंक्शन लिखना है जो दी गई सरणी arr और एक संख्या n को लेता है, तत्वों को n बार से अधिक दोहराने नहीं देता। और हमें यह सब वांछित तत्वों के सूचकांकों को बिना बदले करना है। आइए इस फ़ंक्शन के लिए कोड लिखते हैं:
हम एक हैशमैप में सभी तत्वों की गिनती रखेंगे और पुनरावृत्ति के दौरान जब भी किसी तत्व की गिनती अधिकतम गिनती से अधिक होगी तो हम उस तत्व को splice कर देंगे।
उदाहरण
const arr = [7, 26, 21, 41, 43, 2, 26, 24, 10, 26, 10, 10, 24, 35, 35, 35, 43, 26, 41, 7, 24, 24, 21, 24, 10, 35, 10, 7, 24, 7, 35, 26, 41, 35, 2, 43, 24, 2, 41, 26, 41, 7, 7, 26, 2, 10, 43, 10, 35, 41, 24, 7, 2, 2, 7, 2, 26, 24, 26, 43, 43, 21, 10, 28, 10];
const array = [12, 4, 2, 12, 32, 21, 67, 4, 32, 5];
const deleteExtra = (arr, n) => {
const map = {};
for (let i = 0; i < arr.length; i++) {
if (map[arr[i]]) {
if (map[arr[i]] >= n) {
arr.splice(i, 1);
i--;
} else {
map[arr[i]]++;
}
continue;
}
map[arr[i]] = 1;
}
};
deleteExtra(array, 1);
deleteExtra(arr, 2);
console.log(array);
console.log(arr);
आउटपुट
कंसोल में आउटपुट होगा:
[ 12, 4, 2, 32, 21, 67, 5 ] [ 7, 26, 21, 41, 43, 2, 26, 24, 10, 10, 24, 35, 35, 43, 41, 7, 21, 2, 28 ]