मेरे पास वस्तुओं की दो सरणी हैं,

var deSelectedRows = [
{ PoHeaderKey: 129, OrderNo: "WS1", LineNo: 1, id: "BRIC01"},
{ PoHeaderKey: 129, OrderNo: "WS1", LineNo: 1, id: "BRIC02"},
{ PoHeaderKey: 129, OrderNo: "WS1", LineNo: 1, id: "BRIC03"},
{ PoHeaderKey: 129, OrderNo: "WS1", LineNo: 1, id: "BRIC04"}
];

var selectedRows = [
{ PoHeaderKey: 129, OrderNo: "WS1", LineNo: 1, id: "BRIC01"},
{ PoHeaderKey: 129, OrderNo: "WS1", LineNo: 1, id: "BRIC02"},
{ PoHeaderKey: 129, OrderNo: "WS1", LineNo: 1, id: "BRIC03"},
{ PoHeaderKey: 129, OrderNo: "WS1", LineNo: 1, id: "BRIC04"}
];

और जब मैं नीचे दिए गए तर्क के साथ दो सरणियों के साथ तुलना और पुनरावृति करने की कोशिश कर रहा हूं,

for  (var  i  of selectedRows) {
    for  (var  j  of deSelectedRows) {
      if  ( i.id  ===  j.id ) {
        selectedRows.splice(i,  1);
      }
    }
  }

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

2
tracer 29 मार्च 2018, 16:28

3 जवाब

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

आप Set का इस्तेमाल कर सकते हैं दिए गए id के लिए और सेट के साथ selectedRows को फ़िल्टर करें।

var deSelectedRows = [{ PoHeaderKey: 129, OrderNo: "WS1", LineNo: 1, id: "BRIC01"}, { PoHeaderKey: 129, OrderNo: "WS1", LineNo: 1, id: "BRIC02"}, { PoHeaderKey: 129, OrderNo: "WS1", LineNo: 1, id: "BRIC03"}, { PoHeaderKey: 129, OrderNo: "WS1", LineNo: 1, id: "BRIC04"}],
    selectedRows = [{ PoHeaderKey: 129, OrderNo: "WS1", LineNo: 1, id: "BRIC01"}, { PoHeaderKey: 129, OrderNo: "WS1", LineNo: 1, id: "BRIC02"}, { PoHeaderKey: 129, OrderNo: "WS1", LineNo: 1, id: "BRIC03"}, { PoHeaderKey: 129, OrderNo: "WS1", LineNo: 1, id: "BRIC04"}],
    ids = new Set(deSelectedRows.map(({ id }) => id));

selectedRows = selectedRows.filter(({ id }) => !ids.has(id));

console.log(selectedRows);
6
Nina Scholz 29 मार्च 2018, 13:32

उत्परिवर्तन समस्या से बचने के लिए, आपको अंतिम तत्व से लूप करने की आवश्यकता है क्योंकि मुख्य समस्या विज़िट किए गए तत्व हैं।

var deSelectedRows = [{ PoHeaderKey: 129, OrderNo: "WS1", LineNo: 1, id: "BRIC01"},{ PoHeaderKey: 129, OrderNo: "WS1", LineNo: 1, id: "BRIC02"},{ PoHeaderKey: 129, OrderNo: "WS1", LineNo: 1, id: "BRIC03"},{ PoHeaderKey: 129, OrderNo: "WS1", LineNo: 1, id: "BRIC04"}];
var selectedRows = [{ PoHeaderKey: 129, OrderNo: "WS1", LineNo: 1, id: "BRIC01"},{ PoHeaderKey: 129, OrderNo: "WS1", LineNo: 1, id: "BRIC02"},{ PoHeaderKey: 129, OrderNo: "WS1", LineNo: 1, id: "BRIC03"},{ PoHeaderKey: 129, OrderNo: "WS1", LineNo: 1, id: "BRIC04"}];

var i = selectedRows.length; 
while (i--) {
  for (var j of deSelectedRows) {
    if (selectedRows[i] && selectedRows[i].id === j.id) {
      selectedRows.splice(i, 1);
    }
  }
}

console.log(selectedRows)
1
Ele 29 मार्च 2018, 13:42

हासिल करने के लिए आप filter का उपयोग कर सकते हैं यह कार्यक्षमता।

var deSelectedRows = [
{ PoHeaderKey: 129, OrderNo: "WS1", LineNo: 1, id: "BRIC01"},
{ PoHeaderKey: 129, OrderNo: "WS1", LineNo: 1, id: "BRIC02"},
{ PoHeaderKey: 129, OrderNo: "WS1", LineNo: 1, id: "BRIC03"},
{ PoHeaderKey: 129, OrderNo: "WS1", LineNo: 1, id: "BRIC04"}
];

var selectedRows = [
{ PoHeaderKey: 129, OrderNo: "WS1", LineNo: 1, id: "BRIC01"},
{ PoHeaderKey: 129, OrderNo: "WS1", LineNo: 1, id: "BRIC02"},
{ PoHeaderKey: 129, OrderNo: "WS1", LineNo: 1, id: "BRIC03"},
{ PoHeaderKey: 129, OrderNo: "WS1", LineNo: 1, id: "BRIC04"},
{ PoHeaderKey: 129, OrderNo: "WS1", LineNo: 1, id: "BRIC05"}
];

selectedRows= selectedRows.filter(function(cv){
    return !deSelectedRows.find(function(e){
        return e.id == cv.id;
    });
});

console.log(selectedRows);
2
atiq1589 29 मार्च 2018, 13:45