ಸೂಚ್ಯಂಕ ಮತ್ತು ಷರತ್ತುಗಳ ಆಧಾರದ ಮೇಲೆ ಅರೇ ಮ್ಯಾಪಿಂಗ್ನೊಂದಿಗೆ ಕೆಲಸ ಮಾಡುವುದು
ಜೊತೆ ಕೆಲಸ ಮಾಡುವಾಗ ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ ಅರೇಗಳು, ನಿರ್ದಿಷ್ಟ ಸೂಚ್ಯಂಕದಿಂದ ಪ್ರಾರಂಭವಾಗುವ ಅಂಶಗಳ ಮೇಲೆ ಮಾತ್ರ ಕೇಂದ್ರೀಕರಿಸುವ ಮೂಲಕ ನೀವು ಕೆಲವೊಮ್ಮೆ ಡೇಟಾವನ್ನು ಪರಿವರ್ತಿಸಬೇಕಾಗಬಹುದು. ಮುಂತಾದ ವಿಧಾನಗಳನ್ನು ಬಳಸುವುದು Array.map() ಡೆವಲಪರ್ಗಳಿಗೆ ಅರೇಗಳ ಮೂಲಕ ಪರಿಣಾಮಕಾರಿಯಾಗಿ ಪುನರಾವರ್ತನೆ ಮಾಡಲು ಮತ್ತು ರೂಪಾಂತರಗಳನ್ನು ಅನ್ವಯಿಸಲು ಅನುಮತಿಸುತ್ತದೆ. ಆದಾಗ್ಯೂ, ಪರಿಸ್ಥಿತಿಗಳ ಆಧಾರದ ಮೇಲೆ ಫಿಲ್ಟರಿಂಗ್ ಮಾಡುವಾಗ ಉತ್ತಮ ವಿಧಾನವನ್ನು ನಿರ್ಧರಿಸುವುದು ಕೆಲವು ಪ್ರಶ್ನೆಗಳಿಗೆ ಕಾರಣವಾಗಬಹುದು.
ಈ ಲೇಖನದಲ್ಲಿ, ನಿರ್ದಿಷ್ಟ ಸೂಚ್ಯಂಕದಿಂದ ಪ್ರಾರಂಭವಾಗುವ ಒಂದು ಶ್ರೇಣಿಯನ್ನು ಹೇಗೆ ಮ್ಯಾಪ್ ಮಾಡುವುದು ಮತ್ತು ವ್ಯಾಖ್ಯಾನಿಸಿದ ಆಧಾರದ ಮೇಲೆ ಅದರ ಅಂಶಗಳನ್ನು ಫಿಲ್ಟರ್ ಮಾಡುವುದು ಹೇಗೆ ಎಂದು ನಾವು ಅನ್ವೇಷಿಸುತ್ತೇವೆ. ಮಾನದಂಡ. ಉದಾಹರಣೆಗೆ, ಒಂದು ಸಾಮಾನ್ಯ ಅಗತ್ಯವೆಂದರೆ ನಿರ್ದಿಷ್ಟ ಮೌಲ್ಯಕ್ಕಿಂತ ಚಿಕ್ಕದಾದ ಸಂಖ್ಯೆಗಳ ಸೂಚಿಕೆಗಳನ್ನು ಹೊರತೆಗೆಯುವುದು. ದಕ್ಷತೆಯು ಮುಖ್ಯವಾದ ದೊಡ್ಡ ಡೇಟಾಸೆಟ್ಗಳೊಂದಿಗೆ ಕೆಲಸ ಮಾಡುವಾಗ ಈ ವಿಷಯವು ವಿಶೇಷವಾಗಿ ಮುಖ್ಯವಾಗಿದೆ.
ಒದಗಿಸಿದ ಕೋಡ್ ತುಣುಕನ್ನು ಬಳಸುವ ಪ್ರಯತ್ನವನ್ನು ಪ್ರದರ್ಶಿಸುತ್ತದೆ ನಕ್ಷೆ() ಇದನ್ನು ಸಾಧಿಸಲು ಕಾರ್ಯ. ಆದಾಗ್ಯೂ, ಅಭಿವರ್ಧಕರು ಆಗಾಗ್ಗೆ ಆಶ್ಚರ್ಯ ಪಡುತ್ತಾರೆ Array.map() ಈ ಕಾರ್ಯಕ್ಕೆ ಅತ್ಯಂತ ಸೂಕ್ತವಾದ ಆಯ್ಕೆಯಾಗಿದೆ ಅಥವಾ ಹೆಚ್ಚು ಪರಿಣಾಮಕಾರಿ ಪರ್ಯಾಯಗಳಿದ್ದರೆ. ಉತ್ತಮ ವಿಧಾನದ ಕಡೆಗೆ ನಿಮಗೆ ಮಾರ್ಗದರ್ಶನ ನೀಡಲು ನಾವು ಸಮಸ್ಯೆಯನ್ನು ವಿಶ್ಲೇಷಿಸುತ್ತೇವೆ.
ಈ ಚರ್ಚೆಯ ಅಂತ್ಯದ ವೇಳೆಗೆ, ಎರಡನ್ನೂ ಆಧರಿಸಿ ಅರೇಗಳನ್ನು ಹೇಗೆ ನಿರ್ವಹಿಸುವುದು ಎಂಬುದರ ಕುರಿತು ನೀವು ಉತ್ತಮ ತಿಳುವಳಿಕೆಯನ್ನು ಪಡೆಯುತ್ತೀರಿ ಸೂಚ್ಯಂಕ ಮತ್ತು ಮೌಲ್ಯಾಧಾರಿತ ಷರತ್ತುಗಳು. ವಿಶೇಷವಾಗಿ ಉತ್ತಮ ಕಾರ್ಯಕ್ಷಮತೆಯನ್ನು ನೀಡುವ ಪರ್ಯಾಯಗಳನ್ನು ನಾವು ನೋಡುತ್ತೇವೆ ದೊಡ್ಡ ಸರಣಿಗಳು.
ಆಜ್ಞೆ | ಬಳಕೆಯ ಉದಾಹರಣೆ |
---|---|
Array.slice() | ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ ಸೂಚ್ಯಂಕದಿಂದ ಪ್ರಾರಂಭವಾಗುವ ರಚನೆಯ ಒಂದು ಭಾಗದ ಆಳವಿಲ್ಲದ ನಕಲನ್ನು ರಚಿಸಲು ಬಳಸಲಾಗುತ್ತದೆ. ಈ ಉದಾಹರಣೆಯಲ್ಲಿ, ಇದು ಸೂಚ್ಯಂಕ 1 ರಿಂದ ಅಂಶಗಳನ್ನು ಪ್ರತ್ಯೇಕಿಸುತ್ತದೆ: array.slice(1) ಅಂಶಗಳನ್ನು ಹೊರತೆಗೆಯುತ್ತದೆ [2, 8, 3, 4, 6]. |
Array.map() | This command transforms each element of the array. It’s used to return either the element's index or -1 depending on the condition. Example: array.map((x, i) =>ಈ ಆಜ್ಞೆಯು ರಚನೆಯ ಪ್ರತಿಯೊಂದು ಅಂಶವನ್ನು ಪರಿವರ್ತಿಸುತ್ತದೆ. ಸ್ಥಿತಿಯನ್ನು ಅವಲಂಬಿಸಿ ಅಂಶದ ಸೂಚ್ಯಂಕ ಅಥವಾ -1 ಅನ್ನು ಹಿಂತಿರುಗಿಸಲು ಇದನ್ನು ಬಳಸಲಾಗುತ್ತದೆ. ಉದಾಹರಣೆ: array.map((x, i) => (x |
Array.filter() | Removes unwanted elements from the transformed array. For example, filter(i =>ರೂಪಾಂತರಗೊಂಡ ರಚನೆಯಿಂದ ಅನಗತ್ಯ ಅಂಶಗಳನ್ನು ತೆಗೆದುಹಾಕುತ್ತದೆ. ಉದಾಹರಣೆಗೆ, ಫಿಲ್ಟರ್(i => i !== -1) ಮ್ಯಾಪ್() ಕಾರ್ಯಾಚರಣೆಯ ನಂತರ ಮಾನ್ಯವಾದ ಸೂಚಿಕೆಗಳನ್ನು ಮಾತ್ರ ಉಳಿಸಿಕೊಳ್ಳುವುದನ್ನು ಖಚಿತಪಡಿಸುತ್ತದೆ. |
for loop | ಪುನರಾವರ್ತನೆಯ ಮೇಲೆ ಉತ್ತಮವಾದ ನಿಯಂತ್ರಣವನ್ನು ಒದಗಿಸುವ ಕ್ಲಾಸಿಕ್ ಲೂಪ್ ರಚನೆ. ಈ ಸಮಸ್ಯೆಯಲ್ಲಿ, ಇದು ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ ಪ್ರಾರಂಭ ಸೂಚ್ಯಂಕದಿಂದ ಪುನರಾವರ್ತನೆಯಾಗುತ್ತದೆ: ಫಾರ್ (ಲೆಟ್ i = startIndex; i |
Array.reduce() | Used to accumulate results into a single array based on conditions. Here, it collects indexes of elements matching the criteria: array.reduce((acc, val, i) => { if (i >ಪರಿಸ್ಥಿತಿಗಳ ಆಧಾರದ ಮೇಲೆ ಫಲಿತಾಂಶಗಳನ್ನು ಒಂದೇ ಶ್ರೇಣಿಯಲ್ಲಿ ಸಂಗ್ರಹಿಸಲು ಬಳಸಲಾಗುತ್ತದೆ. ಇಲ್ಲಿ, ಇದು ಮಾನದಂಡಗಳಿಗೆ ಹೊಂದಿಕೆಯಾಗುವ ಅಂಶಗಳ ಸೂಚಿಕೆಗಳನ್ನು ಸಂಗ್ರಹಿಸುತ್ತದೆ: array.reduce((acc, val, i) => { if (i >= 1 && val |
Jest ಪರೀಕ್ಷೆ () | A testing function from the Jest framework that defines individual test cases. Example: test('Approach 1: Slice and Map', () =>ಪ್ರತ್ಯೇಕ ಪರೀಕ್ಷಾ ಪ್ರಕರಣಗಳನ್ನು ವ್ಯಾಖ್ಯಾನಿಸುವ ಜೆಸ್ಟ್ ಫ್ರೇಮ್ವರ್ಕ್ನಿಂದ ಪರೀಕ್ಷಾ ಕಾರ್ಯ. ಉದಾಹರಣೆ: ಪರೀಕ್ಷೆ('ಅಪ್ರೋಚ್ 1: ಸ್ಲೈಸ್ ಮತ್ತು ಮ್ಯಾಪ್', () => { ... }). |
Jest ನಿರೀಕ್ಷಿಸಿ () | ಜೆಸ್ಟ್ ಪರೀಕ್ಷೆಯಲ್ಲಿ ನಿರೀಕ್ಷಿತ ಫಲಿತಾಂಶವನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸುತ್ತದೆ. ಉದಾಹರಣೆ: expect(result).toEqual([1, 3, 4, 5]) ಔಟ್ಪುಟ್ ನಿರೀಕ್ಷಿತ ಶ್ರೇಣಿಗೆ ಹೊಂದಿಕೆಯಾಗುವುದನ್ನು ಖಚಿತಪಡಿಸುತ್ತದೆ. |
accumulator in reduce() | ದಿ ಎಸಿಸಿ ಪ್ಯಾರಾಮೀಟರ್ ಸಂಗ್ರಹಿಸಿದ ಫಲಿತಾಂಶಗಳನ್ನು ಸಂಗ್ರಹಿಸುತ್ತದೆ. ನಮ್ಮ ಸಂದರ್ಭದಲ್ಲಿ, ಪುನರಾವರ್ತನೆಯ ಸಮಯದಲ್ಲಿ ಇದು ಮಾನ್ಯವಾದ ಸೂಚ್ಯಂಕಗಳನ್ನು ಸಂಗ್ರಹಿಸುತ್ತದೆ: acc.push(i) reduce() ಕಾರ್ಯದ ಒಳಗೆ. |
Node.js ಅಗತ್ಯವಿದೆ() | Node.js ನಲ್ಲಿ ಮಾಡ್ಯೂಲ್ಗಳನ್ನು ಆಮದು ಮಾಡಲು ಬಳಸಲಾಗುತ್ತದೆ. ಇಲ್ಲಿ, ಇದು ಜೆಸ್ಟ್ ಫಂಕ್ಷನ್ಗಳನ್ನು ಲೋಡ್ ಮಾಡುತ್ತದೆ: const {test, expect } = ಅವಶ್ಯಕತೆ('@jest/globals');. |
ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ನಲ್ಲಿ ನಿರ್ದಿಷ್ಟ ಸೂಚ್ಯಂಕದಿಂದ ಮ್ಯಾಪಿಂಗ್ ಅರೇಗಳಿಗೆ ಡೀಪ್ ಡೈವ್ ಮಾಡಿ
ಮೊದಲ ಸ್ಕ್ರಿಪ್ಟ್ ಬಳಕೆಯನ್ನು ತೋರಿಸುತ್ತದೆ Array.slice() ಜೊತೆ ಸಂಯೋಜಿಸಲಾಗಿದೆ Array.map(). ಈ ವಿಧಾನವು ಒಂದು ನಿರ್ದಿಷ್ಟ ಸೂಚ್ಯಂಕದಿಂದ ಪ್ರಾರಂಭವಾಗುವ ಮೂಲ ರಚನೆಯ ಭಾಗವನ್ನು ಹೊರತೆಗೆಯಲು ನಮಗೆ ಸಹಾಯ ಮಾಡುತ್ತದೆ ಮತ್ತು ನಂತರ ನಿರ್ದಿಷ್ಟ ಸ್ಥಿತಿಯನ್ನು ಆಧರಿಸಿ ಉಳಿದ ಅಂಶಗಳನ್ನು ನಕ್ಷೆ ಮಾಡುತ್ತದೆ. ಸ್ಲೈಸ್ ವಿಧಾನವು ಆಯ್ಕೆಮಾಡಿದ ಆರಂಭಿಕ ಸೂಚ್ಯಂಕದಿಂದ ಅಂಶಗಳನ್ನು ಮಾತ್ರ ಮುಂದಿನ ಪ್ರಕ್ರಿಯೆಗೆ ಪರಿಗಣಿಸಲಾಗುತ್ತದೆ ಎಂದು ಖಚಿತಪಡಿಸುತ್ತದೆ. ನಕ್ಷೆಯ ಕಾರ್ಯವು ಪ್ರತಿ ಮೌಲ್ಯವನ್ನು ಪರಿಶೀಲಿಸುತ್ತದೆ ಮತ್ತು ಅದು 8 ಕ್ಕಿಂತ ಕಡಿಮೆ ಇರುವ ಮಾನದಂಡಗಳಿಗೆ ಹೊಂದಿಕೆಯಾದಲ್ಲಿ ಅದರ ಸೂಚ್ಯಂಕವನ್ನು ಹಿಂತಿರುಗಿಸುತ್ತದೆ, ಅಥವಾ -1 ಅದು ಮಾಡದಿದ್ದರೆ.
ಎರಡನೆಯ ಉದಾಹರಣೆಯು ಸಾಂಪ್ರದಾಯಿಕವನ್ನು ಬಳಸಿಕೊಂಡು ಹೆಚ್ಚು ಕಾರ್ಯಕ್ಷಮತೆ-ಆಪ್ಟಿಮೈಸ್ಡ್ ವಿಧಾನವನ್ನು ಕೇಂದ್ರೀಕರಿಸುತ್ತದೆ ಲೂಪ್ಗಾಗಿ. ಇಲ್ಲಿ, ಸ್ಕ್ರಿಪ್ಟ್ ಡೆವಲಪರ್ಗಳಿಗೆ ಅಪೇಕ್ಷಿತ ಸೂಚ್ಯಂಕದಿಂದ ಲೂಪ್ ಅನ್ನು ಹಸ್ತಚಾಲಿತವಾಗಿ ಪ್ರಾರಂಭಿಸುವ ಮೂಲಕ ಪುನರಾವರ್ತನೆಯ ಮೇಲೆ ಸಂಪೂರ್ಣ ನಿಯಂತ್ರಣವನ್ನು ನೀಡುತ್ತದೆ. ಈ ವಿಧಾನವು ನಕ್ಷೆ ಮತ್ತು ಫಿಲ್ಟರ್ನಂತಹ ಕ್ರಿಯಾತ್ಮಕ ವಿಧಾನಗಳಿಗೆ ಸಂಬಂಧಿಸಿದ ಹೆಚ್ಚುವರಿ ಓವರ್ಹೆಡ್ ಅನ್ನು ತಪ್ಪಿಸುತ್ತದೆ. ಪ್ರತಿ ಮಾನ್ಯವಾದ ಸೂಚ್ಯಂಕವನ್ನು ನೇರವಾಗಿ ಫಲಿತಾಂಶಗಳ ಶ್ರೇಣಿಗೆ ತಳ್ಳಲಾಗುತ್ತದೆ. ದೊಡ್ಡ ಅರೇಗಳೊಂದಿಗೆ ಕೆಲಸ ಮಾಡುವಾಗ ಈ ವಿಧಾನದ ಪ್ರಯೋಜನವು ಸ್ಪಷ್ಟವಾಗುತ್ತದೆ, ಅಲ್ಲಿ ಕಾರ್ಯದ ಕರೆಗಳನ್ನು ಕಡಿಮೆ ಮಾಡುವುದರಿಂದ ಕಾರ್ಯಕ್ಷಮತೆಯನ್ನು ಗಮನಾರ್ಹವಾಗಿ ಸುಧಾರಿಸಬಹುದು.
ಮೂರನೆಯ ಪರಿಹಾರವು ಕ್ರಿಯಾತ್ಮಕ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಪರ್ಯಾಯವನ್ನು ಒದಗಿಸುತ್ತದೆ Array.reduce(). ಈ ವಿಧಾನವು ಒಂದೇ ಶ್ರೇಣಿಯಲ್ಲಿ ಮಾನದಂಡಗಳನ್ನು ಪೂರೈಸುವ ಸೂಚ್ಯಂಕಗಳನ್ನು ಸಂಗ್ರಹಿಸುತ್ತದೆ, ಅದೇ ಫಲಿತಾಂಶವನ್ನು ಸಾಧಿಸಲು ಸಂಕ್ಷಿಪ್ತ ಮಾರ್ಗವನ್ನು ಒದಗಿಸುತ್ತದೆ. ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ ಸೂಚ್ಯಂಕದಿಂದ ಪ್ರಾರಂಭವಾಗುವ ಪ್ರತಿಯೊಂದು ಅಂಶದ ಮೇಲೆ ಕಡಿತ ಕಾರ್ಯವು ಪುನರಾವರ್ತನೆಯಾಗುತ್ತದೆ ಮತ್ತು ಅಂಶವು ಸ್ಥಿತಿಯನ್ನು ಪೂರೈಸಿದರೆ, ಅದು ಶೇಖರಣಾ ರಚನೆಗೆ ಸೂಚ್ಯಂಕವನ್ನು ಸೇರಿಸುತ್ತದೆ. ಒಂದೇ ಪಾಸ್ನಲ್ಲಿ ಫಿಲ್ಟರಿಂಗ್ ಮತ್ತು ಕ್ರೋಢೀಕರಣ ಎರಡೂ ಅಗತ್ಯವಿರುವ ಸಂಕೀರ್ಣ ರೂಪಾಂತರಗಳಿಗೆ ಕಡಿಮೆ ವಿಧಾನವು ವಿಶೇಷವಾಗಿ ಉಪಯುಕ್ತವಾಗಿದೆ.
ಕೊನೆಯದಾಗಿ, ಈ ಪರಿಹಾರಗಳನ್ನು ಮೌಲ್ಯೀಕರಿಸಲು ಘಟಕ ಪರೀಕ್ಷೆಯು ನಿರ್ಣಾಯಕವಾಗಿದೆ, ವಿಶೇಷವಾಗಿ ರಚನೆಯ ಗಾತ್ರವು ಬೆಳೆದಾಗ ಅಥವಾ ಪರಿಸ್ಥಿತಿಗಳು ಕ್ರಿಯಾತ್ಮಕವಾಗಿ ಬದಲಾದಾಗ. ಉದಾಹರಣೆ ಬಳಸುತ್ತದೆ ಜೆಸ್ಟ್ ಸ್ವಯಂಚಾಲಿತ ಪರೀಕ್ಷೆಗಳನ್ನು ನಡೆಸಲು ಫ್ರೇಮ್ವರ್ಕ್, ಪ್ರತಿಯೊಂದು ವಿಧಾನವು ವಿವಿಧ ಪ್ರಕರಣಗಳಿಗೆ ಸರಿಯಾದ ಔಟ್ಪುಟ್ ಅನ್ನು ಹಿಂದಿರುಗಿಸುತ್ತದೆ. ಪರೀಕ್ಷೆಯು ಅಂಚಿನ ಪ್ರಕರಣಗಳನ್ನು ಗುರುತಿಸಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ ಮತ್ತು ಕೋಡ್ ವಿಭಿನ್ನ ಸನ್ನಿವೇಶಗಳಲ್ಲಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ ಎಂಬ ವಿಶ್ವಾಸವನ್ನು ನೀಡುತ್ತದೆ. ಪ್ರತಿ ಯುನಿಟ್ ಪರೀಕ್ಷೆಯು ಸ್ಕ್ರಿಪ್ಟ್ಗಳಿಂದ ಹಿಂತಿರುಗಿಸಲಾದ ಸೂಚ್ಯಂಕಗಳು ನಿರೀಕ್ಷಿತ ಔಟ್ಪುಟ್ಗೆ ಹೊಂದಿಕೆಯಾಗುತ್ತದೆಯೇ ಎಂದು ಪರಿಶೀಲಿಸುತ್ತದೆ. ಈ ಸಮಗ್ರ ವಿಧಾನವು ಆಯ್ಕೆ ಮಾಡಿದ ವಿಧಾನವನ್ನು ಲೆಕ್ಕಿಸದೆಯೇ ಕಾರ್ಯಕ್ಷಮತೆ ಮತ್ತು ಸರಿಯಾಗಿರುವುದನ್ನು ಸಾಧಿಸುತ್ತದೆ ಎಂದು ಖಚಿತಪಡಿಸುತ್ತದೆ.
ಬಹು ವಿಧಾನಗಳೊಂದಿಗೆ ನಿರ್ದಿಷ್ಟ ಸೂಚ್ಯಂಕದಿಂದ ಒಂದು ಶ್ರೇಣಿಯನ್ನು ನಕ್ಷೆ ಮಾಡಲು JavaScript ಅನ್ನು ಬಳಸುವುದು
ಡೈನಾಮಿಕ್ ಇಂಡೆಕ್ಸ್ನಿಂದ ಅರೇ ಮ್ಯಾನಿಪ್ಯುಲೇಷನ್ ಮೇಲೆ ಕೇಂದ್ರೀಕರಿಸುವ ಮುಂಭಾಗದ ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ ಪರಿಹಾರ
// Approach 1: Using Array.slice() and Array.map() for Partial Mapping
const array = [4, 2, 8, 3, 4, 6];
const startIndex = 1; // Starting index for filtering
const result = array.slice(startIndex).map((x, i) => (x < 8 ? i + startIndex : -1))
.filter(index => index !== -1);
console.log(result); // Output: [1, 3, 4, 5]
// This method uses slice() to extract the subarray from index 1
// and map() to find indexes of elements meeting the criteria.
ಕಾರ್ಯಕ್ಷಮತೆಗಾಗಿ ಲೂಪ್ಗಳೊಂದಿಗೆ ಅರೇ ಮ್ಯಾಪಿಂಗ್ ಅನ್ನು ಆಪ್ಟಿಮೈಜ್ ಮಾಡುವುದು
ಹೆಚ್ಚುವರಿ ಫಂಕ್ಷನ್ ಕರೆಗಳನ್ನು ತಪ್ಪಿಸಲು ಮತ್ತು ಕಾರ್ಯಕ್ಷಮತೆಯನ್ನು ಸುಧಾರಿಸಲು ಫಾರ್ ಲೂಪ್ ಅನ್ನು ಬಳಸುವುದು
// Approach 2: Using a for loop for better control and optimization
const array = [4, 2, 8, 3, 4, 6];
const startIndex = 1;
const result = [];
for (let i = startIndex; i < array.length; i++) {
if (array[i] < 8) result.push(i);
}
console.log(result); // Output: [1, 3, 4, 5]
// This approach provides better performance with large arrays
// by avoiding the overhead of map() and filter().
Node.js ಮತ್ತು ಕ್ರಿಯಾತ್ಮಕ ಶೈಲಿಯನ್ನು ಬಳಸಿಕೊಂಡು ಬ್ಯಾಕೆಂಡ್-ಆಧಾರಿತ ಪರಿಹಾರ
ಕ್ರಿಯಾತ್ಮಕ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಮೇಲೆ ಕೇಂದ್ರೀಕರಿಸುವ Node.js ಬ್ಯಾಕೆಂಡ್ ಪರಿಹಾರ
// Approach 3: Functional approach using Array.reduce()
const array = [4, 2, 8, 3, 4, 6];
const startIndex = 1;
const result = array.reduce((acc, val, i) => {
if (i >= startIndex && val < 8) acc.push(i);
return acc;
}, []);
console.log(result); // Output: [1, 3, 4, 5]
// Array.reduce() offers a concise and functional way to collect
// the indexes matching the criteria without additional filtering.
ಎಲ್ಲಾ ಪರಿಹಾರಗಳನ್ನು ಮೌಲ್ಯೀಕರಿಸಲು ಘಟಕ ಪರೀಕ್ಷೆಗಳು
Jest ಫ್ರೇಮ್ವರ್ಕ್ ಅನ್ನು ಬಳಸಿಕೊಂಡು JavaScript ಪರಿಹಾರಗಳಿಗಾಗಿ ಘಟಕ ಪರೀಕ್ಷೆ
// Unit tests for all three approaches using Jest
const { test, expect } = require('@jest/globals');
const array = [4, 2, 8, 3, 4, 6];
test('Approach 1: Slice and Map', () => {
const result = array.slice(1).map((x, i) => (x < 8 ? i + 1 : -1)).filter(i => i !== -1);
expect(result).toEqual([1, 3, 4, 5]);
});
test('Approach 2: For Loop', () => {
const result = [];
for (let i = 1; i < array.length; i++) {
if (array[i] < 8) result.push(i);
}
expect(result).toEqual([1, 3, 4, 5]);
});
test('Approach 3: Reduce', () => {
const result = array.reduce((acc, val, i) => {
if (i >= 1 && val < 8) acc.push(i);
return acc;
}, []);
expect(result).toEqual([1, 3, 4, 5]);
});
ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ನಲ್ಲಿ ಸುಧಾರಿತ ಅರೇ ಮ್ಯಾಪಿಂಗ್ ತಂತ್ರಗಳನ್ನು ಅನ್ವೇಷಿಸಲಾಗುತ್ತಿದೆ
ಬಳಕೆಗೆ ಮೀರಿದ ಆಸಕ್ತಿದಾಯಕ ವಿಧಾನ Array.map() ಅಥವಾ ಲೂಪ್ಗಳಿಗಾಗಿ ಹತೋಟಿ ಹೊಂದಿದೆ Array.findIndex() ಪರಿಸ್ಥಿತಿಗಳ ಆಧಾರದ ಮೇಲೆ ಕ್ರಿಯಾತ್ಮಕವಾಗಿ ಅಂಶಗಳನ್ನು ಪತ್ತೆ ಮಾಡುವ ವಿಧಾನ. ಈ ವಿಧಾನವು ಒಂದು ನಿರ್ದಿಷ್ಟ ಸ್ಥಿತಿಯನ್ನು ಪೂರೈಸುವ ಮೊದಲ ಸೂಚ್ಯಂಕವನ್ನು ಹಿಂತಿರುಗಿಸುತ್ತದೆ, ನೀವು ರಚನೆಯನ್ನು ಮ್ಯಾಪ್ ಮಾಡಬೇಕಾದಾಗ ಇದು ಉಪಯುಕ್ತವಾಗಿಸುತ್ತದೆ ಆದರೆ ಹೊಂದಾಣಿಕೆಯ ಅಂಶ ಕಂಡುಬಂದ ತಕ್ಷಣ ನಿಲ್ಲಿಸುತ್ತದೆ. ಇದು ಸಂಪೂರ್ಣ ರಚನೆಯ ಮೂಲಕ ಪುನರಾವರ್ತನೆಯಿಂದ ಸ್ವಲ್ಪ ಭಿನ್ನವಾಗಿದ್ದರೂ, ನಿರ್ದಿಷ್ಟ ಬಳಕೆಯ ಸಂದರ್ಭಗಳಿಗೆ ಉತ್ತಮವಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುವ ಪರ್ಯಾಯವನ್ನು ನೀಡುತ್ತದೆ, ವಿಶೇಷವಾಗಿ ಮೊದಲ ಹೊಂದಾಣಿಕೆಯ ಸೂಚ್ಯಂಕ ಮಾತ್ರ ಅಗತ್ಯವಿದ್ದಾಗ.
ಓದುವಿಕೆಯನ್ನು ಸುಧಾರಿಸಲು ಮತ್ತೊಂದು ಪರ್ಯಾಯವಾಗಿದೆ Array.flatMap(). ಮ್ಯಾಪಿಂಗ್ ತರ್ಕವು ಒಂದೇ ಇನ್ಪುಟ್ಗಾಗಿ ಬಹು ಔಟ್ಪುಟ್ಗಳನ್ನು ರಚಿಸುವುದನ್ನು ಒಳಗೊಂಡಿದ್ದರೆ ಅಥವಾ ನೀವು ನೆಸ್ಟೆಡ್ ಫಲಿತಾಂಶಗಳನ್ನು ಒಂದು ಆಯಾಮದ ಅರೇಗಳಾಗಿ ಚಪ್ಪಟೆಗೊಳಿಸಬೇಕಾದರೆ ಈ ವಿಧಾನವು ವಿಶೇಷವಾಗಿ ಸಹಾಯಕವಾಗಿರುತ್ತದೆ. ಮಾನದಂಡಕ್ಕೆ ವಿರುದ್ಧವಾಗಿ ನಕ್ಷೆ(), ಅದೇ ಉದ್ದದ ಶ್ರೇಣಿಯನ್ನು ಹಿಂದಿರುಗಿಸುತ್ತದೆ, ಫ್ಲಾಟ್ ಮ್ಯಾಪ್() ಒಂದೇ ಪಾಸ್ನಲ್ಲಿ ಮ್ಯಾಪಿಂಗ್ ಮತ್ತು ಚಪ್ಪಟೆ ಕಾರ್ಯಾಚರಣೆಗಳನ್ನು ಸಂಯೋಜಿಸುತ್ತದೆ. ಇದು ಸಾಮಾನ್ಯವಾಗಿ ಬಳಸಲ್ಪಡದಿದ್ದರೂ, ಇದು ನಿಮ್ಮ ಕೋಡ್ ಅನ್ನು ಹೆಚ್ಚು ಸಂಕೀರ್ಣ ಸನ್ನಿವೇಶಗಳಲ್ಲಿ ಸ್ಟ್ರೀಮ್ಲೈನ್ ಮಾಡಬಹುದು.
ಅಂತಿಮವಾಗಿ, ಕಾರ್ಯಕ್ಷಮತೆಯು ಒಂದು ಪ್ರಮುಖ ಕಾಳಜಿಯಾಗಿದ್ದರೆ, ಹೈಬ್ರಿಡ್ ವಿಧಾನವನ್ನು ಬಳಸುವುದು ಪ್ರತಿ () ಸ್ಥಿತಿ-ಆಧಾರಿತ ಪುಶ್ ತರ್ಕದೊಂದಿಗೆ ಸಂಯೋಜಿಸಲ್ಪಟ್ಟ ಪುನರಾವರ್ತನೆಗಾಗಿ ವೇಗ ಮತ್ತು ಸರಳತೆ ಎರಡನ್ನೂ ನೀಡುತ್ತದೆ. ಇದು ಅನಗತ್ಯ ಕಾರ್ಯ ಕರೆಗಳನ್ನು ನಿವಾರಿಸುತ್ತದೆ ಮತ್ತು ನಿಮ್ಮ ತರ್ಕವನ್ನು ಸರಳವಾಗಿರಿಸುತ್ತದೆ. ಅಂದಿನಿಂದ ಪ್ರತಿ () ಹೊಸ ರಚನೆಯನ್ನು ಹಿಂತಿರುಗಿಸುವುದಿಲ್ಲ, ಗುರಿಯು ಅಡ್ಡ ಪರಿಣಾಮಗಳಾಗಿದ್ದಾಗ ಅದು ಸೂಕ್ತವಾಗಿದೆ (ಬಾಹ್ಯ ರಚನೆಗೆ ಮೌಲ್ಯಗಳನ್ನು ಸೇರಿಸುವುದು). ಈ ಸಂಯೋಜನೆಯು ಕೋಡ್ ಸ್ಪಷ್ಟತೆಯನ್ನು ಕಾಪಾಡಿಕೊಳ್ಳುವಾಗ ಹೆಚ್ಚಿನ ಕಾರ್ಯಕ್ಷಮತೆಯನ್ನು ಖಾತ್ರಿಗೊಳಿಸುತ್ತದೆ, ವಿಶೇಷವಾಗಿ ದೊಡ್ಡ ಡೇಟಾಸೆಟ್ಗಳೊಂದಿಗೆ ಕೆಲಸ ಮಾಡುವಾಗ.
ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ನೊಂದಿಗೆ ಮ್ಯಾಪಿಂಗ್ ಅರೇಗಳಲ್ಲಿ ಸಾಮಾನ್ಯ ಪ್ರಶ್ನೆಗಳು
- ಹೇಗಿದೆ Array.slice() ಭಿನ್ನವಾಗಿದೆ Array.map()?
- Array.slice() ಮೂಲ ರಚನೆಯನ್ನು ಮಾರ್ಪಡಿಸದೆ ರಚನೆಯ ವಿಭಾಗವನ್ನು ಹೊರತೆಗೆಯುತ್ತದೆ, ಹಾಗೆಯೇ Array.map() ಮೂಲ ಪ್ರತಿ ಅಂಶವನ್ನು ಪರಿವರ್ತಿಸುವ ಮೂಲಕ ಹೊಸ ಶ್ರೇಣಿಯನ್ನು ರಚಿಸುತ್ತದೆ.
- ನಾನು ಯಾವಾಗ ಬಳಸಬೇಕು for loops ಬದಲಿಗೆ map()?
- ಬಳಸಿ for loops ನಿಮಗೆ ಉತ್ತಮ ಕಾರ್ಯಕ್ಷಮತೆಯ ಅಗತ್ಯವಿರುವಾಗ ಅಥವಾ ತರ್ಕವು ನಿಭಾಯಿಸಲು ಕಷ್ಟಕರವಾದ ಸಂಕೀರ್ಣ ಪರಿಸ್ಥಿತಿಗಳನ್ನು ಒಳಗೊಂಡಿರುವಾಗ map().
- ಬಳಸುವುದರಿಂದ ಏನು ಪ್ರಯೋಜನ Array.flatMap()?
- Array.flatMap() ಮ್ಯಾಪಿಂಗ್ ಮತ್ತು ಸಮತಟ್ಟಾದ ಕಾರ್ಯಾಚರಣೆಗಳನ್ನು ಒಂದಾಗಿ ಸಂಯೋಜಿಸಲು ಉಪಯುಕ್ತವಾಗಿದೆ, ವಿಶೇಷವಾಗಿ ನೆಸ್ಟೆಡ್ ಅರೇಗಳೊಂದಿಗೆ ವ್ಯವಹರಿಸುವಾಗ.
- ಆಗಿದೆ Array.reduce() ಏಕಕಾಲದಲ್ಲಿ ಫಿಲ್ಟರಿಂಗ್ ಮತ್ತು ಮ್ಯಾಪಿಂಗ್ ಮಾಡಲು ಸೂಕ್ತವಾಗಿದೆ?
- ಹೌದು, Array.reduce() ಒಂದು ಪಾಸ್ನಲ್ಲಿ ಮ್ಯಾಪಿಂಗ್ ಮತ್ತು ಫಿಲ್ಟರಿಂಗ್ ಮಾನದಂಡಗಳ ಆಧಾರದ ಮೇಲೆ ಫಲಿತಾಂಶಗಳನ್ನು ಸಂಗ್ರಹಿಸಲು ಅತ್ಯುತ್ತಮ ಸಾಧನವಾಗಿದೆ.
- ಹೇಗೆ ಮಾಡುತ್ತದೆ Array.findIndex() ಕಾರ್ಯಕ್ಷಮತೆಯನ್ನು ಸುಧಾರಿಸುವುದೇ?
- Array.findIndex() ಹೊಂದಾಣಿಕೆಯ ಅಂಶ ಕಂಡುಬಂದ ತಕ್ಷಣ ಪುನರಾವರ್ತನೆಯನ್ನು ನಿಲ್ಲಿಸುತ್ತದೆ, ನಿಮಗೆ ಮೊದಲ ಹೊಂದಾಣಿಕೆಯ ಸೂಚ್ಯಂಕ ಅಗತ್ಯವಿರುವಾಗ ಅದನ್ನು ವೇಗಗೊಳಿಸುತ್ತದೆ.
- ಮಾಡುತ್ತದೆ forEach() ಹಾಗೆ ಹೊಸ ಶ್ರೇಣಿಯನ್ನು ಹಿಂತಿರುಗಿಸಿ map()?
- ಇಲ್ಲ, forEach() ಅಡ್ಡ ಪರಿಣಾಮಗಳಿಗಾಗಿ ವಿನ್ಯಾಸಗೊಳಿಸಲಾಗಿದೆ ಮತ್ತು ಹೊಸ ರಚನೆಯನ್ನು ಹಿಂತಿರುಗಿಸುವುದಿಲ್ಲ. ಪ್ರತಿ ಅಂಶವನ್ನು ಪರಿವರ್ತಿಸದೆಯೇ ನೀವು ಕಾರ್ಯಾಚರಣೆಗಳನ್ನು ನಿರ್ವಹಿಸಬೇಕಾದಾಗ ಇದು ಸೂಕ್ತವಾಗಿದೆ.
- ಒಂದು ವೇಳೆ ಏನಾಗುತ್ತದೆ map() ಹಿಂದಿರುಗಿಸುತ್ತದೆ undefined?
- ಒಳಗೆ ಒಂದು ಕಾರ್ಯ ವೇಳೆ map() ಹಿಂದಿರುಗಿಸುತ್ತದೆ undefined, ಫಲಿತಾಂಶವು ಒಳಗೊಂಡಿರುತ್ತದೆ undefined ಆ ಸ್ಥಾನದಲ್ಲಿ, ಸರಿಯಾಗಿ ನಿರ್ವಹಿಸದಿದ್ದಲ್ಲಿ ಇದು ಅನಪೇಕ್ಷಿತ ನಡವಳಿಕೆಗೆ ಕಾರಣವಾಗಬಹುದು.
- ನಾನು ಬಳಸಬಹುದೇ map() ವಸ್ತುಗಳ ಮೇಲೆ, ಅಥವಾ ವ್ಯೂಹಗಳ ಮೇಲೆ ಮಾತ್ರವೇ?
- map() ನಿರ್ದಿಷ್ಟವಾಗಿ ರಚನೆಗಳಿಗಾಗಿ ವಿನ್ಯಾಸಗೊಳಿಸಲಾಗಿದೆ. ವಸ್ತುಗಳೊಂದಿಗೆ ಕೆಲಸ ಮಾಡಲು, ನೀವು ಬಳಸಬೇಕಾಗುತ್ತದೆ Object.entries() ಅಥವಾ Object.keys() ವಸ್ತುವನ್ನು ಪುನರಾವರ್ತನೀಯ ರಚನೆಯಾಗಿ ಪರಿವರ್ತಿಸಲು.
- ಹೇಗೆ ಮಾಡುತ್ತದೆ filter() ಜೊತೆಯಲ್ಲಿ ಕೆಲಸ ಮಾಡಿ map()?
- filter() ರಚನೆಯಿಂದ ಅನಗತ್ಯ ಅಂಶಗಳನ್ನು ತೆಗೆದುಹಾಕುತ್ತದೆ, ಹಾಗೆಯೇ map() ಉಳಿದ ಅಂಶಗಳನ್ನು ಪರಿವರ್ತಿಸುತ್ತದೆ. ಎರಡನ್ನೂ ಸಂಯೋಜಿಸುವುದು ಪರಿಸ್ಥಿತಿಗಳ ಆಧಾರದ ಮೇಲೆ ನಿಖರವಾದ ಔಟ್ಪುಟ್ ಅನ್ನು ಖಚಿತಪಡಿಸುತ್ತದೆ.
ಅರೇ ಮ್ಯಾಪಿಂಗ್ಗಾಗಿ ಉತ್ತಮ ಅಭ್ಯಾಸಗಳ ಸಾರಾಂಶ
ನಿರ್ದಿಷ್ಟ ಸೂಚ್ಯಂಕದಿಂದ ಒಂದು ಶ್ರೇಣಿಯನ್ನು ಮ್ಯಾಪಿಂಗ್ ಮಾಡುವುದು ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ ಫಿಲ್ಟರ್ ಮಾಡಿದ ಡೇಟಾದೊಂದಿಗೆ ಕೆಲಸ ಮಾಡುವಾಗ ಡೆವಲಪರ್ಗಳಿಗೆ ನಮ್ಯತೆಯನ್ನು ನೀಡುತ್ತದೆ. ಬಳಕೆ ನಕ್ಷೆ(), ಲೂಪ್ಗಳಿಗಾಗಿ, ಅಥವಾ ಕಡಿಮೆ() ಕಾರ್ಯಕ್ಷಮತೆ ಮತ್ತು ಕೋಡ್ ಸ್ಪಷ್ಟತೆಯ ಅಗತ್ಯವನ್ನು ಅವಲಂಬಿಸಿರುತ್ತದೆ. ಸರಿಯಾದ ವಿಧಾನವನ್ನು ಆಯ್ಕೆ ಮಾಡುವುದರಿಂದ ಮೃದುವಾದ, ಆಪ್ಟಿಮೈಸ್ಡ್ ಅನುಭವವನ್ನು ಖಾತ್ರಿಗೊಳಿಸುತ್ತದೆ.
ಫಿಲ್ಟರಿಂಗ್ನೊಂದಿಗೆ ಈ ವಿಧಾನಗಳನ್ನು ಸಂಯೋಜಿಸುವುದು ದೊಡ್ಡ ಡೇಟಾಸೆಟ್ಗಳನ್ನು ಪರಿಣಾಮಕಾರಿಯಾಗಿ ಪ್ರಕ್ರಿಯೆಗೊಳಿಸಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ. ಪ್ರತಿ ಪರಿಹಾರವನ್ನು ಪರೀಕ್ಷಿಸುವುದು ಸರಿಯಾದತೆಯನ್ನು ಖಚಿತಪಡಿಸುತ್ತದೆ ಮತ್ತು ಅನಿರೀಕ್ಷಿತ ಫಲಿತಾಂಶಗಳನ್ನು ತಪ್ಪಿಸುತ್ತದೆ. ಪರಿಕರಗಳ ಸರಿಯಾದ ಆಯ್ಕೆಯೊಂದಿಗೆ, ಡೆವಲಪರ್ಗಳು ಹೆಚ್ಚಿನ ಕೋಡ್ ಗುಣಮಟ್ಟವನ್ನು ಕಾಪಾಡಿಕೊಳ್ಳುವಾಗ ಹೆಚ್ಚಿನ ನಿಖರತೆಯೊಂದಿಗೆ ಡೇಟಾವನ್ನು ಕುಶಲತೆಯಿಂದ ನಿರ್ವಹಿಸಬಹುದು.
ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ ಅರೇ ಮ್ಯಾಪಿಂಗ್ ಟೆಕ್ನಿಕ್ಸ್ಗಾಗಿ ಮೂಲಗಳು ಮತ್ತು ಉಲ್ಲೇಖಗಳು
- ಬಗ್ಗೆ ಮಾಹಿತಿಯನ್ನು ಒದಗಿಸುತ್ತದೆ Array.map() ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ನಲ್ಲಿ ವಿಧಾನ ಮತ್ತು ಅದರ ಬಳಕೆಯ ಸಂದರ್ಭಗಳು. ಹೆಚ್ಚಿನ ವಿವರಗಳು ಇಲ್ಲಿ ಲಭ್ಯವಿದೆ MDN ವೆಬ್ ಡಾಕ್ಸ್: Array.map() .
- ಬಳಕೆಯ ಪ್ರಯೋಜನಗಳನ್ನು ವಿವರಿಸುತ್ತದೆ Array.reduce() ಡೇಟಾ ರೂಪಾಂತರಗಳಿಗಾಗಿ. ನಲ್ಲಿ ಇನ್ನಷ್ಟು ತಿಳಿಯಿರಿ MDN ವೆಬ್ ಡಾಕ್ಸ್: Array.reduce() .
- ನ ಬಳಕೆಯನ್ನು ಒಳಗೊಳ್ಳುತ್ತದೆ ಲೂಪ್ಗಳಿಗಾಗಿ ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ನಲ್ಲಿ ಕಾರ್ಯಕ್ಷಮತೆ ಆಪ್ಟಿಮೈಸೇಶನ್ಗಾಗಿ. ಭೇಟಿ ನೀಡಿ freeCodeCamp: JavaScript ಫಾರ್ ಲೂಪ್ ಟ್ಯುಟೋರಿಯಲ್ ಹೆಚ್ಚುವರಿ ಉದಾಹರಣೆಗಳಿಗಾಗಿ.
- ಇದರೊಂದಿಗೆ JavaScript ಕಾರ್ಯಗಳನ್ನು ಪರೀಕ್ಷಿಸಲು ಒಳನೋಟಗಳನ್ನು ಒದಗಿಸುತ್ತದೆ ಜೆಸ್ಟ್. ನಲ್ಲಿ ಇನ್ನಷ್ಟು ಪ್ರವೇಶಿಸಿ ಜೆಸ್ಟ್ ಡಾಕ್ಯುಮೆಂಟೇಶನ್ .
- ಎಂಬುದರ ಕುರಿತು ವಿವರವಾದ ಮಾರ್ಗದರ್ಶಿಯನ್ನು ನೀಡುತ್ತದೆ Array.filter() ಅರೇಗಳಿಂದ ಅಂಶಗಳನ್ನು ಫಿಲ್ಟರ್ ಮಾಡುವ ವಿಧಾನ. ಇದನ್ನು ಮತ್ತಷ್ಟು ಎಕ್ಸ್ಪ್ಲೋರ್ ಮಾಡಿ MDN ವೆಬ್ ಡಾಕ್ಸ್: Array.filter() .