मेरे पास दो सरणियाँ हैं, arr1 = [1,2,7,9,10] और arr2 = [40,50,70,80,30]। इन दो सरणियों से, मेरे पास लंबाई 15 की एक शून्य-भरा सरणी है जिसे मैं इंडेक्स के रूप में arr1 और मानों के रूप में arr2 का उपयोग करके पॉप्युलेट करना चाहता हूं: [0,40,50,0,0,0,0,70,0,80,30,0,0,0,0]

ऐसा करने के लिए कोड क्या है?

-3
Dare 30 जिंदा 2019, 02:27

2 जवाब

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

यहाँ समाधान है:

var arr1 = [1,2,7,9,10]; // Add 0 to your array if you want first element of array3 to be replaced with arr2 element
    // If you want first element like in example this would be correct
    // var arr1 = [0,1,6,8,9];
    var arr2 = [40,50,70,80,30];
    var arr3 = [];  //[40,50,0,0,0,0,70,0,80,30,0,0,0,0,0]
    
    var arr3Length = 15;
    
    var arr2Counter = 0;
    
    for ( var i = 0; i < arr3Length; i ++ ) {
    
        if ( arr1.includes(i) ) {
            arr3.push(arr2[arr2Counter]);
            arr2Counter ++;
        } else {
            arr3.push(0);
        }
    
    }
    
    console.log(arr3);

जावास्क्रिप्ट सरणी 0 तत्व से शुरू होती है, 1 नहीं, इसलिए आपका पहला मान 0 है, 40 नहीं ...

0
Srdjan 30 जिंदा 2019, 02:50

इसे करने का एक संक्षिप्त तरीका यहां दिया गया है बिना किसी लूप के या यदि/अन्यथा। आप पहले 0s और उपयुक्त लंबाई के साथ एक सरणी बनाते हैं, और फिर आप स्लॉट भरते हैं।

const indices = [1, 2, 7, 9, 10];    // criteria 1
const values = [40, 50, 70, 80, 30]; // criteria 2
const length = 15;                   // criteria 3

const array = new Array(length).fill(0);
indices.forEach((idx, i) => array[idx] = values[i]);

console.log(array)

यदि दी गई लंबाई आपकी अनुक्रमणिका सरणी के अंतिम तत्व से छोटी है, तो आप मानदंड 3 (लंबाई) के लिए एक डिफ़ॉल्ट मान की गणना भी कर सकते हैं।

lengthSafe = length < indices[indices.length-1] ? indices[indices.length-1] : length;

आपको यह भी सुनिश्चित करना चाहिए कि आपका मान सरणी आपके सूचकांक सरणी से छोटा नहीं है।

इसके अलावा, सावधान रहें, जावास्क्रिप्ट सरणी अनुक्रमण 0 से शुरू होता है, 1 नहीं!

यदि आप 1 को अपनी पहली अनुक्रमणिका मानते हैं, तो इसके बजाय ऐसा करें:

indices.forEach((idx, i) => array[idx - 1] = values[i]);
0
jo_va 30 जिंदा 2019, 10:36