क्या इस सरल उदाहरण में किसी अन्य लूप के साथ चलने पर .includes विधि O(n^2) का कारण बनती है?

function myFn(){
    let age = people.map(person => {
            if(person > 21){
              return "YES";
        } else {
          return "NO";
        }
    return age.includes('NO') ? 'NO' : 'YES';
}
0
JeromeCode 23 अक्टूबर 2020, 19:03

1 उत्तर

सबसे बढ़िया उत्तर

विधि निर्दिष्ट है जैसे कि यह वास्तव में सरणी तत्व के माध्यम से जाता है तत्व। तो वह ओ (एन) (रैखिक) है। लेकिन यह आपके map के बाद है, जो पहले ही सभी सरणी के माध्यम से जा चुका है।

अनुकूलन करने के लिए जावास्क्रिप्ट इंजन कार्यान्वयन मुफ्त (हमेशा की तरह) हैं बशर्ते अनुकूलन विधि के शब्दार्थ को नहीं बदलता है।


एक साइड नोट के रूप में, हालांकि, यदि आप एक मनमानी स्थिति से मेल खाने वाले तत्व के लिए एक सरणी देखना चाहते हैं, तो map+includes आपकी सबसे अच्छी पसंद नहीं है; some और every हैं बेहतर है, क्योंकि वे शॉर्ट-सर्किट (लूपिंग बंद कर देते हैं) जब वे एक ऐसा तत्व पाते हैं जो परीक्षण पास करता है (some) या विफल (every)। आपका कोड यह देखने के लिए दिखता है कि क्या people में प्रत्येक तत्व > 21 है, तो यह होगा:

function myFn() {
    return people.every(person => person > 21) ? "YES" : "NO";
}
2
T.J. Crowder 23 अक्टूबर 2020, 16:17