javascript - स्ट्रिंग्स को विभाजित करके मैं किसी ऐरे को ऑब्जेक्ट में कैसे बदल सकता हूं?




arrays json (5)

मेरे पास नीचे की तरह एक सरणी है:

["gender-m", "age-20", "city-london", "lang-en", "support-home"]

मैंने JSON ऑब्जेक्ट जेनरेट करने की कोशिश की:

{"gender":"m", "age":"20", "city":"london", "lang":"en", "support":"home"}

एक समाधान जिसके बारे में मैं सोच सकता हूं कि इसे बनाने के लिए लूप का उपयोग किया जा रहा है, लेकिन मुझे यकीन है कि इसके लिए सुरुचिपूर्ण समाधान हैं। किसी भी सुझाव, कृपया मेरी मदद करो।


Array.reduce का उपयोग करें

const arr = ["gender-1", "age-m", "city-london", "lang-en", "support-home"]
arr.reduce((acc, c) => {
    const str = c.split('-')
    return {...acc, [str[0]]: str[1]}
}, {})

आप Object.fromEntries कुंजी / मूल्य जोड़े के साथ Object.fromEntries ले सकते हैं।

var data = ["gender-m", "age-20", "city-london", "lang-en", "support-home"],
    result = Object.fromEntries(data.map(s => s.split('-')));

console.log(result);


इसे स्प्लिट और मैप के साथ हल किया जा सकता है, सरणी के अंदर का फ़ॉर्च आइटम मद से बदल जाता है - इसके साथ : स्प्लिट का उपयोग करके इसे एक महत्वपूर्ण मान में बदल दिया जाएगा, फिर उन मानों को उस ऑब्जेक्ट पर असाइन करें जिसे आप वापस करना चाहते हैं।

var arrayObject = ["gender-m", "age-20", "city-london", "lang-en", "support-home"];
var objectResulted ={};

arrayObject.map(
  function(item){ 
  var splitedValue = item.split('-');  
  objectResulted [splitedValue[0]]= splitedValue[1] 
  });

console.log (objectResulted);


चूँकि आपने मूल रूप से इसे "लोदाश" प्रश्न के रूप में टैग किया था, यहाँ एक लोदश-आधारित उत्तर है:

const arr = ["gender-m", "age-20", "city-london", "lang-en", "support-home"];

const obj = _.chain(arr)
  .map(v => _.split(v, '-'))
  .fromPairs()
  .value();
  
console.log(obj);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.15/lodash.min.js"></script>


Array.reduce विधि का उपयोग करें

["gender-m", "age-20", "city-london", "lang-en", "support-home"].map(s => s.split('-')).reduce((rs, el) => {rs[el[0]] = el[1]; return rs;}, {});






lodash