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

//1st one
tasks.push({ ID: 1, Address: "---", Latitude: 312313, Longitude: 21312 });
tasks.push({ ID: 3, Address: "---", Latitude: 312313, Longitude: 21312 });
//2nd one
agentTasks.push({ID:2,AgentID: 2,TaskID:1});

अब मैं केवल उन मानों को प्राप्त करने के लिए tasks सरणी को फ़िल्टर करना चाहता हूं जो agentTasks सरणी में शामिल नहीं हैं। जैसे टास्क आईडी 1 को agentTasks में शामिल किया गया है लेकिन 3 को शामिल नहीं किया गया है। तो मुझे केवल आईडी 3 मान चाहिए। मैं इसे कोणीय/टाइपप्रति में कैसे कर सकता हूं?

-2
Hunzla Sheikh 9 मार्च 2020, 15:33

2 जवाब

आप {a href="https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Set" rel="nofollow noreferrer">सेट सभी टास्कआईडी का से बना सकते हैं agentTasks और फिर .filter() केवल उन कार्यों को रखने के लिए tasks सरणी पर जो ID कार्य आईडी के सेट में मौजूद नहीं हैं:

const tasks = [
  { ID: 1, Address: "---", Latitude: 312313, Longitude: 21312 },
  { ID: 3, Address: "---", Latitude: 312313, Longitude: 21312}
];
const agentTasks = [{ID:2,AgentID: 2,TaskID:1}];

const taskIds = new Set(agentTasks.map(({TaskID}) => TaskID));
const res = tasks.filter(({ID}) => !taskIds.has(ID));
console.log(res);
3
Nick Parsons 9 मार्च 2020, 15:40
मुझे इस प्रश्न में नकारात्मक रेटिंग मिली है और अब मैं कोई प्रश्न पोस्ट नहीं कर सकता। अब मुझे क्या करना चाहिए?
 – 
Hunzla Sheikh
11 मार्च 2020, 13:52

अंततः आप filter सरणी फ़ंक्शन का उपयोग करना चाहते हैं।

tasks में प्रत्येक आइटम के लिए agentTasks सरणी खोजना सबसे आसान तरीका है। यह छोटे सरणियों के लिए ठीक है, लेकिन बड़े सरणियों के लिए अक्षम है।

इसके बजाय, मैं एक Map बनाऊंगा agentTasks सरणी से, TaskID का उपयोग कुंजी के रूप में। फिर आप tasks को इस आधार पर फ़िल्टर कर सकते हैं कि उनके पास Map में संबंधित कुंजी है या नहीं।

//1st one
const tasks = [];
tasks.push({ ID: 1, Address: "---", Latitude: 312313, Longitude: 21312 });
tasks.push({ ID: 3, Address: "---", Latitude: 312313, Longitude: 21312 });

//2nd one
const agentTasks = [];
agentTasks.push({ID:2,AgentID: 2,TaskID:1});

const agentTasksMap = new Map(agentTasks.map(x => [x.TaskID, x]));
const filtered = tasks.filter(task => !agentTasksMap.has(task.ID));

console.log(filtered);

संपादित करें: Set का उपयोग करने वाला उत्तर बेहतर है, क्योंकि आप मेरे उत्तर में Map के मानों की परवाह नहीं करते हैं - आप केवल एक कुंजी के अस्तित्व की परवाह करते हैं।

2
Kurt Hamilton 9 मार्च 2020, 15:53
1
एक बंद सरणी, प्रभावी ढंग से। developer.mozilla.org/en-US/docs/ वेब/जावास्क्रिप्ट/संदर्भ/…. Set दूसरे उत्तर से हालांकि बेहतर है, क्योंकि आप केवल चाबियों की परवाह करते हैं, मूल्यों की नहीं।
 – 
Kurt Hamilton
9 मार्च 2020, 15:51