ES6 सीखते समय और मैं एक ऐरे पर कई वस्तुओं की अनुक्रमणिका खोजने की कोशिश कर रहा था, लेकिन मुझे अभी पहले आइटम की अनुक्रमणिका मिली जो मेरी स्थिति या कॉलबैक फ़ंक्शन से मेल खाती है।

उदाहरण: मेरे पास उम्र के साथ एक सरणी है और मैं सभी उम्र की अनुक्रमणिका 18 से अधिक या उसके बराबर चाहता हूं।

let ages = [12,15, 18, 17, 21];
console.log(`Over 18: ${ages.findIndex(item => item >= 18)}`);
// output that i'm looking: [2,4]
// output that is coming: 2

तो मैं यह समझना चाहता हूं कि क्या Array.prototype.findIndex() विधि केवल पहले आइटम की एकल अनुक्रमणिका लौटाती है जो मेल खाती है या -1 कोई आइटम शर्त को पूरा करता है। और हम इसे ES6 का उपयोग करके कैसे कर सकते हैं?


धन्यवाद

6
CesarCedanoV 3 जुलाई 2018, 18:37

2 जवाब

findIndex() विधि लौटाती है में प्रथम तत्व की अनुक्रमणिका सरणी जो प्रदान किए गए परीक्षण फ़ंक्शन को संतुष्ट करती है। अन्यथा -1 है लौटा हुआ।

एक विकल्प reduce के बजाय। करने के लिए concat का उपयोग करें यदि संख्या 18 . से अधिक या उसके बराबर है, तो संचायक में अनुक्रमणिका जोड़ें

let ages = [12, 15, 18, 17, 21];

let result = ages.reduce((c, v, i) => v >= 18 ? c.concat(i) : c, []);

console.log(result);
7
Eddie 3 जुलाई 2018, 18:40

बस Array.reduce() का उपयोग करें और 18 से अधिक उम्र के सभी उम्र के सूचकांक की सरणी बनाएं।

let ages = [12,15, 18, 17, 21];
var result = ages.reduce((a,curr,index)=>{
  if(curr >= 18)
    a.push(index);
  return a;
},[]);
console.log(result);
1
amrender singh 3 जुलाई 2018, 18:40