मेरे पास स्ट्रिंग्स की एक सरणी है, प्रत्येक में अल्पविराम से अलग किए गए मान हैं।

मैं इसे वस्तुओं की एक सरणी में बदलना चाहता हूं।

उदाहरण के लिए, मेरे पास है:

var myarray = [
 "a1,b1,c1,d1",
 "a2,b2,c2,d2",
 "a3,b3,c3,d3"
]

... जो इस प्रकार समाप्त होना चाहिए:

[
  {
    "field1": "a1",
    "field2": "b1",
    "field3": "c1",
    "field3": "d1"
  },
  {
    "field1": "a2",
    "field2": "b2",
    "field3": "c2",
    "field2": "d2"
  },
  {
    "field1": "a3",
    "field2": "b3",
    "field3": "c3",
    "field3": "d3"
  },
]

मैंने विभिन्न तरीकों की कोशिश की है, जैसे ऑब्जेक्ट.असाइन और स्प्रेड ऑपरेटर। लेकिन ऐसा लगता है कि विनाशकारी का उपयोग करके ऐसा करने का एक आसान तरीका होना चाहिए।

0
J Woodchuck 19 जून 2020, 02:22

3 जवाब

var myarray = [
 "a1,b1,c1,d1",
 "a2,b2,c2,d2",
 "a3,b3,c3,d3"
];

const makeProperties = arr => arr.map(item => item.split(',').reduce((result, splitItem, index) => {
  result['field' + (index + 1)] = splitItem;
  return result;
}, {}));

console.log(makeProperties(myarray));
3
Adrian Brand 19 जून 2020, 03:06

आप मैप करके डबल map बना सकते हैं। सरणी तो उनके मान।

var myarray = ["a1,b1,c1,d1", "a2,b2,c2,d2", "a3,b3,c3,d3"];

const fields = ["field1", "field2", "field3", "field4"];

const fromArrayToObjects = (array) =>
  array.map((value) =>
    value.split(",").map((value, index) => {
      const key = fields[index];
      return Object.assign({ [key]: value });
    })
  );
console.log(fromArrayToObjects(myarray));
1
Menai Ala Eddine - Aladdin 19 जून 2020, 03:52

आपको वास्तविक सरणी को मैप करना होगा और स्ट्रिंग को स्प्लिट ("",") से विभाजित करना होगा

और फिर दो लूप बनाएं, एक बाहरी लूप और एक आंतरिक लूप

बाहरी को प्रत्येक पंक्ति मिलती है, और आंतरिक को पंक्तियों का प्रत्येक मान मिलता है

और फिर खाली सरणी पर धकेलें

// define an empty array
let myArray = [];
// original array
let arr = [
    "a1,b1,c1,d1",
    "a2,b2,c2,d2",
    "a3,b3,c3,d3"
];

// make new array
let newArr = arr.map(item => item.split(","));

// loop through values of each row
newArr.forEach((row, index) => row.forEach(val => myArray.push({['field' + (index + 1)]: val})));

console.log(myArray);
0
Eissa Saber 19 जून 2020, 04:43