मैं वर्तमान और अगले सरणी तत्व को शामिल करते हुए एक ऑपरेशन करना चाहता हूं।

उदाहरण के लिए, वर्तमान तत्व को अगले के साथ जोड़ें:

let arr = [0,1,2,3,4,5];
let newarr = arr.map((a,b) => a+b); //here, a and b are treated as the same element

यह वर्तमान और अगले सरणी तत्व की रकम की एक नई सरणी उत्पन्न करने की अपेक्षा करता है:

[0+1, 1+2, 2+3, 3+4, 4+5]

क्या मानचित्र के साथ ऐसा करना संभव है? यदि नहीं, तो क्या कोई अन्य तरीका है जो एक ही ऑपरेशन में कई सरणी तत्वों में हेरफेर करने के लिए उपयुक्त है?

0
Dex 19 मार्च 2021, 11:58

4 जवाब

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

यहां, ए और बी को एक ही तत्व के रूप में माना जाता है

नहीं, a मान है और b सूचकांक है। वे आपके विशेष डेटा सेट में समान होते हैं।

क्या मानचित्र के साथ ऐसा करना संभव है?

मानचित्र के साथ ही नहीं। यह आपको सरणी में प्रत्येक मान के लिए एक नया मान देगा, लेकिन आप 6 मानों से शुरू कर रहे हैं और 5 के साथ समाप्त हो रहे हैं, इसलिए आपको एक अतिरिक्त परिवर्तन की आवश्यकता है।

जाहिर है आपको "वर्तमान सूचकांक" के बजाय "अगला मूल्य" का भी उपयोग करने की आवश्यकता है।

const arr = [0,1,2,3,4,5];
const newarr = arr.map((value, index, array) => value + array[index + 1]);
newarr.pop(); // Discard the last value (5 + undefined);
console.log(newarr);
2
Quentin 19 मार्च 2021, 09:03

आप मूल सरणी के समान अनुक्रमणिका पर मान और मान के साथ सरणी और मानचित्र को स्लाइस कर सकते हैं।

const
    array = [0, 1, 2, 3, 4, 5],
    result = array.slice(1).map((v, i) => array[i] + v);

console.log(result);
1
Nina Scholz 19 मार्च 2021, 09:01

आप उसके लिए reduce का उपयोग कर सकते हैं:

const arr = [0, 1, 2, 3, 4, 5];

const out = arr.reduce((acc, el, i) => {
  if (i === arr.length - 1) { // don't do anything for the last element
    return acc;
  }
  acc.push(el + arr[i + 1]);
  return acc;
}, []);

console.log(out)
0
Ramesh Reddy 19 मार्च 2021, 09:03

मानचित्र में दूसरा पैरामीटर अनुक्रमणिका है। चूंकि नक्शा प्रत्येक पुनरावृत्ति के लिए परिणाम देता है, इसलिए आप अवांछित वस्तु को नए सरणी से फ़िल्टर कर सकते हैं:

let arr = [0,1,2,3,4,5];
let newarr = arr.map((a,b) => a+arr[b+1]).filter(i => !isNaN(i));
console.log(newarr);
1
Mamun 19 मार्च 2021, 09:22