मैं वस्तुओं की एक सरणी में दो से अधिक सरणी वस्तुओं को कैसे विलय कर सकता हूं। जैसे मेरे पास है:

var arr1 = [{"userID": 554,"name":"abc"},{"userID": 555,"name":"xyz"}]    

var arr2 = [{"userID": 554,"lang":"ENG"},{"userID": 554,"lang":"GER"},{"userID": 555,"lang":"ENG"}]

var arr3 = [{"userID": 554,"SET":"QWE"},{"userID": 555,"SET":"ABC"},{"userID": 555,"SET":"XYZ"}]

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

var final = [
    {
        "name":"abc"
        "userID": 554,
        "arr2" = [
            {
                "userID": 554,
                "lang":"ENG"
            },
            {
                "userID": 554,
                "lang":"GER"
            }
        ],
        "arr3" = [
            {
                "userID": 554,
                "SET":"QWE"
            }
        ]
    },
    {
        "userID": 555,
        "name":"xyz"
        "arr2" = [
            {
                "userID": 555,
                "name":"ENG"
            }
        ],
        "arr3" = [
            {
                "userID": 555,
                "SET":"ABC"
            },
            {
                "userID": 555,
                "SET":"XYZ"
            }
        ]
    }
]

मैं स्प्रेड ऑपरेटर (...) के साथ ES6 का उपयोग नहीं कर सकता क्योंकि मेरी एक शर्त है कि इसे उस सरणी में मिला दिया जाना चाहिए जहां कुंजी userID मेल खाती है ताकि मुझे उपरोक्त आउटपुट या जैसे {"userID": 554, "name": "abc", "lang": ["ENG", "GER"],...} मिल जाए।

0
Sonu 28 मार्च 2018, 12:24

3 जवाब

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

इसे आज़माएं, सटीक आउटपुट देना चाहिए

let result = arr1.map(item =>{
    let obj = {};
    obj.userID = item.userID;
    obj.name = item.name;
    obj.arr2 = arr2.filter( it => it.userID === item.userID);
    obj.arr3 = arr3.filter( it => it.userID === item.userID);
    return obj;
})
console.log(result);
1
prabhatojha 28 मार्च 2018, 10:26

ES6 के साथ स्प्रेड ऑपरेटर (...) के साथ यह बहुत आसान है,

var arr1 = [{"userID": 554,"name":"abc"},{"userID": 555,"name":"xyz"}]    

var arr2 = [{"userID": 554,"lang":"ENG"},{"userID": 554,"lang":"GER"},{"userID": 555,"lang":"ENG"}]

var arr3 = [{"userID": 554,"SET":"QWE"},{"userID": 555,"SET":"ABC"},{"userID": 555,"SET":"XYZ"}]

const merged = [].concat(...arr1,...arr2,...arr3)
console.log(merged)

//Another way of doing is,

const merged1 = [...arr1 , ...arr2,...arr3];
console.log(merged1)
0
Vijayanath Viswanathan 28 मार्च 2018, 10:05

@ Deshak9 . के उत्तर के आधार पर

var arr1 = [{"userID": 554,"name":"abc"},{"userID": 555,"name":"xyz"}]    
var arr2 = [{"userID": 554,"lang":"ENG"},{"userID": 554,"lang":"GER"},{"userID": 555,"lang":"ENG"}]
var arr3 = [{"userID": 554,"SET":"QWE"},{"userID": 555,"SET":"ABC"},{"userID": 555,"SET":"XYZ"}]

let result = arr1.map(item => {
    let obj = {};
    obj.userID = item.userID;
    obj.name = item.name;
    obj.lang = arr2.filter( it => it.userID === item.userID).map(item => { return item.lang; });
    obj.SET = arr3.filter( it => it.userID === item.userID).map(item => { return item.SET; });
    return obj;
})
console.log(result);

मुझे लगता है कि यह दी गई संपत्ति के लिए सभी मानों को सरणी में जोड़ने के लिए इसे और अधिक पठनीय बनाता है। नीचे उदाहरण देखें।

{
  "userID": 554,
  "name": "abc",
  "lang": [
    "ENG",
    "GER"
  ],
  "SET": [
    "QWE"
  ]
}
1
KungWaz 28 मार्च 2018, 10:45