मुझे टेक्स्ट इनपुट से एक स्ट्रिंग लेने और इसे किसी सरणी से JSON ऑब्जेक्ट में कनवर्ट करने की आवश्यकता है।

let orderInputArray = ["key1", "value1", "key2", "value2"];
let json = {}
let key,value;

orderInputArray.forEach(function(keyValue) {
  json[key] = keyValue.value;
});

let orderInputJSON = JSON.stringify(orderInputArray);

मुझे ऐसा दिखने की ज़रूरत है:

[{"key1": "value1"}, {"key2": "value2"}]

मुझे पूरा यकीन नहीं है कि प्रत्येक लूप के लिए इसे कैसे किया जाए। क्या कोई इस पर थोड़ा प्रकाश डाल सकता है?

0
Stephen Ross 8 अक्टूबर 2018, 19:54

7 जवाब

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

ऑब्जेक्ट बनाने का यह आदर्श तरीका नहीं है, लेकिन आप कुंजी को छोड़ सकते हैं, वर्तमान इंडेक्स (i) का उपयोग करके कुंजी/मान के साथ ऑब्जेक्ट बना सकते हैं, और इसे परिणाम पर धक्का दे सकते हैं (orderInputObjects ):

const orderInputArray = ["key1", "value1", "key2", "value2"];
const orderInputObjects = [];

orderInputArray.forEach(function(v, i, a) {
  if(i % 2) orderInputObjects.push({ [a[i - 1]]: v });
});

console.log(orderInputObjects);
3
Ori Drori 8 अक्टूबर 2018, 20:13

आप इसे reduce के साथ कर सकते हैं भी

let orderInputArray = ["key1", "value1", "key2", "value2"];
var l = orderInputArray.length;
var jsobj = orderInputArray.reduce(function(acc, v, i) {
    var o = {};
    if (i % 2 === 0 && i < l - 1) {
        o[v] = orderInputArray[i + 1];
        acc.push(o)
    }
    return acc;
}, []);
console.log(JSON.stringify(jsobj))
1
bugwheels94 8 अक्टूबर 2018, 20:04
let orderInputArray = ["key1", "value1", "key2", "value2"];
jsonArray = [];
orderInputArray.forEach((item, i, a)=> {if(i%2 === 0) jsonArray.push({item:a[i+1]})});

console.log(jsonArray)
1
Mohammed Ashfaq 8 अक्टूबर 2018, 20:25

forEach कॉल बैक फ़ंक्शन का उपयोग करता है, इसलिए आपके कोड में let orderInputJSON = JSON.stringify(orderInputArray); से पहले समाप्त होने की गारंटी नहीं है।

प्रयोग करने का प्रयास करें

var i;

for (i =0; i < orderInputArray.length; i=i+2){
//create object here using orderInputArray[i] as key and orderInputArray[i+1] as value
}
1
Aragorn 8 अक्टूबर 2018, 19:59

आप विषम और सम की एक सरणी बनाने के लिए filter का उपयोग कर सकते हैं, फिर ऑब्जेक्ट की सरणी बनाने के लिए फ़ंक्शन को कम करें का उपयोग करें

let orderInputArray = ["key1", "value1", "key2", "value2"];
let vals = orderInputArray.filter(function(item, index) {
  return index % 2 === 1

});
let keys = orderInputArray.filter(function(item, index) {
  return index % 2 === 0

}).reduce(function(acc, curr, index) {
  acc.push({
    [curr]: vals[index]
  })
  return acc
}, []);
console.log(keys)
1
brk 8 अक्टूबर 2018, 20:04

आप लूप के लिए सरल का उपयोग कर सकते हैं और 1 के बजाय 2 से वृद्धि कर सकते हैं

function arrayToKeyValue(array) {
  let updated = [];
  for (let i = 0; i < array.length; i += 2) {
    const key = array[i];
    const value = array[i + 1];
    updated.push({ key: value });
  }
  return updated;
}
2
Siyavash 8 अक्टूबर 2018, 19:58

यहाँ ब्याह के साथ मेरा समाधान:

var fruits = ["Banana", "Orange", "Apple", "Mango"];

var json = {};
while(fruits.length > 0){
    let a = fruits.splice(0,2)
    console.log(a)
    json[a[0]] = a[1]
}

console.log(json)
1
enno.void 8 अक्टूबर 2018, 20:04