दो एरर्स की तुलना करने के लिए एक फ़ंक्शन, यह जांचने के लिए कि क्या दोनों में समान तत्व हैं। भले ही वे आउट ऑफ ऑर्डर हों ...
यह सरल सरणियों के लिए अच्छा है। [स्ट्रिंग, संख्या, बूलियन, शून्य, nan]।
मैं .sort () का उपयोग नहीं करता, यह मूल सरणी को संशोधित करता है। कुछ कहते हैं इसका बुरा ...
सावधान। यह फ़ंक्शन सीमित है यह वस्तुओं की तुलना "[], {}" या इन Arrays के भीतर नहीं कर सकता है, सरणियाँ यह स्व है ऑब्जेक्ट हैं।
let arraysHasSameElements = (arr1, arr2) => {
let count =
// returns counting of occurrences.
(arr, val) => arr.reduce((count, curr) => (curr === val ? 1 : 0) + count, 0);
/* this will return true if lengths of the arrays is equal.
then compare them.*/
return arr1.length === arr2.length
// compare arr1 against arr2.
&& arr1.reduce((checks, val) =>
/* creating array of checking if a value has equal amount of occurrences
in both arrays, then adds true 'check'. */
checks.concat(count(arr1, val) === count(arr2, val)), [])
// checking if each check is equal to true, then .every() returns true.
.every(check => check);
}
let arr1 = ['',-99,true,NaN,21,null,false,'help',-99,'help',NaN],
arr2 = [null,-99,'',NaN,NaN,false,true,-99,'help',21,'help'];
arraysHasSameElements(arr1, arr2); //true
let arr3 = [false,false,false,false,false,false],
arr4 = [false,false,false,false,false,false]
arraysHasSameElements(arr3, arr4); //true
// here we have uncommented version.
let arraysHasSameElements = (arr1, arr2) => {
let count = (arr, val) => arr.reduce((count, curr) => (curr === val ? 1:0) + count, 0);
return arr1.length === arr2.length && arr1.reduce((checks, val) =>
checks.concat(count(arr1, val) === count(arr2, val)), []).every(check => check);
}