मेरे पास कोणीय में दो सरणियाँ हैं।

मूल्यों के साथ एक नियमित सरणी ए है ['स्टॉक_नंबर', 'मॉडल', 'टाइप', 'बिल_नंबर']

एक अन्य संबंधित सरणी बी निम्न की तरह है

0:[
  {
    'Stock_Number': 'GTH738', 
    'Model': 'sample_model', 
    'Type': 'sample_type', 
    'Bill_Number': 7784754,
    'some_prop1': 'prop1_val',
    'some_prop2': 'prop2_val'
  }
];

दोनों सरणियाँ गतिशील हैं। इसके अलावा बी में ए की तुलना में अधिक कॉलम हैं। ए के पास बी की कुंजी है (ए बी का सबसेट है) मैं केवल ए में तत्वों के लिए एक नया सरणी सी प्राप्त करना चाहता हूं। इसके लिए मैं जांच कर रहा हूं कि बी में कुंजी मौजूद है या नहीं। निम्नलिखित मेरा है कोड

for(var i=0,j=0; i<B.length,j<A.length; i++,j++){
        if (!B.hasOwnProperty(A)) {
           var value = A[j];
                console.log('if-'+value); //printing value 
                console.log(B[0].value); // printing undefined 
               // C.push(B[0].value);
        }else{
            //some code
        }
    }

परिणामी सरणी निम्न की तरह कुछ होनी चाहिए

{
'Stock_Number': 'GTH738', 
'Model': 'sample_model', 
'Type': 'sample_type', 
'Bill_Number': 7784754
}

क्या कोई मुझे सुझाव दे सकता है कि यह कैसे प्राप्त किया जा सकता है?

2
Esco 27 मार्च 2018, 10:01

3 जवाब

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

आप इस दृष्टिकोण का उपयोग कर सकते हैं। आपको जो चाहिए उस पर बेहतर उदाहरण के लिए मैंने बी सरणी के ऑब्जेक्ट पर कुछ अतिरिक्त गुण जोड़े हैं जो सरणी ए में नहीं है। इस प्रकार, उन गुणों को सरणी सी में ऑब्जेक्ट्स से बाहर रखा गया है

var A = ['Stock_Number', 'Model', 'Type', 'Bill_Number'];
var B = [
  {
    'Stock_Number': 'GTH738', 
    'Model': 'sample_model', 
    'Type': 'sample_type', 
    'Bill_Number': 7784754
  },
  {
    'Stock_Number': 'GTH740', 
    'Model': 'sample_model2', 
    'Type': 'sample_type2', 
    'Bill_Number': 7784754,
    'someProp1': 1,
    'someProp2': 2,
  }
];

var C = [];
for(var i=0; i<B.length; i++){
  var obj = B[i];
  var objKeys = Object.keys(obj);
  var resObj = {};
  A.forEach(function(itemA){
    if(objKeys.indexOf(itemA) !== -1){
      resObj[itemA] = obj[itemA];
    }
  });
  C.push(resObj);
}

console.log(C);
1
Ankit Agarwal 27 मार्च 2018, 07:26
var A = ['Stock_Number', 'Model', 'Type', 'Bill_Number'];
var B = [
  {
    'Stock_Number': 'GTH738', 
    'Model': 'sample_model', 
    'Type': 'sample_type', 
    'Bill_Number': 7784754
  },
  {
    'Stock_Number': 'GTH740', 
    'Model': 'sample_model2', 
    'Type': 'sample_type2', 
    'Bill_Number': 7784754,
    'someProp1': 1,
    'someProp2': 2,
  }
];

var C = B.map(item =>{
    let obj = {};
    A.forEach(key => {
        obj[key] = item[key];
    });
    return obj;
});
0
prabhatojha 27 मार्च 2018, 09:26

आप अज्ञात कुंजियों को फ़िल्टर कर सकते हैं और अधिशेष कुंजियों से एक नई वस्तु बना सकते हैं।

var arrayA = ['Stock_Number', 'Model', 'Type', 'Bill_Number'],
    arrayB = [{ Stock_Number: 'GTH738', Model: 'sample_model', Type: 'sample_type', Bill_Number: 7784754 }, { Stock_Number: 'GTH738', Model: 'sample_model', Type: 'sample_type', Bill_Number: 7784754, foo: 'bar', baz: 42 }],
    result = [];

arrayB.forEach(function (b) {
    keys = Object.keys(b).filter(k => !arrayA.includes(k));
    if (keys.length) {
        result.push(Object.assign(...keys.map(k => ({ [k]: b[k] }))));
    }
});

console.log(result);
0
Nina Scholz 27 मार्च 2018, 07:18