2017-10-19 11 views
5

का उपयोग कर स्ट्रिंग का क्रम बदलें मैं इस चुनौती से फंस गया हूं, कोई भी मदद महान होगी।एक सरणी अनुक्रमणिका/जावास्क्रिप्ट

'एक ऐसा फ़ंक्शन बनाएं जो स्ट्रिंग और संख्याओं की संख्या दोनों तर्कों के रूप में लेता है। इंडेक्स नंबरों द्वारा निर्दिष्ट क्रम में स्ट्रिंग में अक्षरों का पुनर्व्यवस्थित करें। "रीमिक्स्ड" स्ट्रिंग लौटें। उदाहरण

रीमिक्स ("एबीसीडी", [0, 3, 1, 2]) ➞ "acdb" '

मेरे प्रयास -

function remix(str, arr) { 
var arr2 = []; 
    for (var i=0; i<str.length; i++){ 
    arr2.splice(arr[i], 0, str[i]); 
} 
return arr2.join(""); 

}

यह कुछ का समाधान होगा लेकिन सभी परीक्षण नहीं। ईजी। ("एबीसीडी", [0, 3, 1, 2]) = "एसीडीबी" लेकिन कुछ नहीं करते हैं। ईजी। "जिम्मेदारी", [0, 6, 8, 11, 10, 7, 13, 5, 3, 2, 4, 12, 1, 9]) होना चाहिए - "rtibliensyopis" मेरा "rteislbpoyinsi"

+2

मुझे सवाल नहीं मिला '[0, 3, 1, 2]' यह इसे 'एसीडीबी' 'में रीमिक्स कैसे करता है? क्या आप कृपया मुझे एक सुराग दे सकते हैं। –

+1

@ नंदुकालिंडी मुझे लगता है कि मुझे यह मिलता है, '0,3,2,1' का मतलब है "स्थानांतरित करें" "' '' '' ''' ''' '' '' '' '' '' '' '' '' 'और' "d" 'से' 2'। यह अपेक्षित '" एसीडीबी "' 'देता है (इसलिए सरणी बताती है कि अक्षरों को कहां स्थानांतरित करना है, न कि कौन से अक्षरों को लेना है)। – pawel

+0

बिल्कुल सही! अब यह समझ में आता है। धन्यवाद। –

उत्तर

2
होना चाहिए

आप वास्तविक पत्र के लिए लक्ष्य सूचकांक के रूप में arr[i] के मान का उपयोग कर सकते हैं।

function remix(str, arr) { 
 
    var result = [], 
 
     i; 
 

 
    for (i = 0; i < str.length; i++) { 
 
     result[arr[i]] = str[i]; 
 
    } 
 

 
    return result.join(''); 
 
} 
 

 
console.log(remix("abcd", [0, 3, 1, 2])); // "acdb" 
 
console.log(remix("responsibility", [0, 6, 8, 11, 10, 7, 13, 5, 3, 2, 4, 12, 1, 9])) // "rtibliensyopis"

0
function myFunction(text, nums){ 
var arr = []; 
for(var num in nums){ 
    arr.push(text.charAt(nums[num]));  
} 
return arr; 

};

मुझे लगता है कि यह काम करना चाहिए।

0

संपादित उत्तर - पहले प्रश्न का गलत व्याख्या किया।

आप arr से str से पत्र लक्ष्य स्थितियों के आधार पर के साथ एक नई सरणी में पदों को भरने के Array.prototype.reduce उपयोग कर सकते हैं:

const remix = (str, arr) => (
    arr.reduce((acc, target, idx) => { 
     acc[target] = str[idx]; return acc; 
    }, []) 
).join(''); 

या एक सरणी में str में पत्र की सरणी को कम:

const remix = (str, arr) => (
    [...str].reduce((acc, letter, idx) => { 
     acc[arr[idx]] = letter; return acc; 
    }, []) 
).join(''); 
+0

मुझे नहीं लगता कि यह ओपी का प्रतिनिधित्व करने वाले आउटपुट को वापस कर देगा। नीना शॉल्ज़ के जवाब की जांच करें। मुझे खुद को रीमिक्स बिल्कुल ठीक नहीं मिला। –

+0

@ नंदूुलिलिंडी ने इसका जवाब देने के लिए धन्यवाद दिया, जवाब संपादित किया। – pawel