मेरे पास वस्तुओं की तीन सरणियाँ हैं:

const names = [
  { value: "Time" },
  { value: "Angle" },
  { value: "Speed" },
  { value: "Mass" }
];

const params = [
  { name: "Time", value: "s" },
  { name: "Time", value: "h" },
  { name: "Time", value: "m" },
  { name: "Angle", value: "rad" },
  { name: "Angle", value: "grade" }
];

const selected = [
  { id: 1, name: "Time", param: "s" },
  { id: 2, name: "Time", param: "h" },
  { id: 3, name: "Time", param: "m" },
  { id: 4, name: "Angle", param: "grade" },
  { id: 5, name: "Speed", param: null }
];

मुझे आइटम के बिना नए नाम सरणी की आवश्यकता है:

  • सभी संभावित पैराम्स के साथ चुना गया है
  • यदि दिए गए नाम में परम संभव नहीं है तो इसे केवल एक बार चुना जा सकता है

इस मामले में मेरा अपेक्षित आउटपुट होना चाहिए

    const expected = [
      { value: "Angle" }, 
      { value: "Mass" }
    ]
-2
Mateusz Mazurkiewicz 24 फरवरी 2019, 21:20

1 उत्तर

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

आप द्वारा फ़िल्टर कर सकते हैं

  • परम null और . के साथ कुछ मूल्य नहीं है
  • फ़िल्टर किए गए पैराम और चयनित वस्तुओं की समान लंबाई नहीं होना और लंबाई होना।
const
    names = [{ value: "Time" }, { value: "Angle" }, { value: "Speed" }, { value: "Mass" }],
    params = [{ name: "Time", value: "s" }, { name: "Time", value: "h" }, { name: "Time", value: "m" }, { name: "Angle", value: "rad" }, { name: "Angle", value: "grade" }],
    selected = [ { id: 1, name: "Time", param: "s" }, { id: 2, name: "Time", param: "h" }, { id: 3, name: "Time", param: "m" }, { id: 4, name: "Angle", param: "grade" }, { id: 5, name: "Speed", param: null }],
    result = names.filter(({ value }) => {
        const check = ({ name }) => name === value,
              pl = params.filter(check).length,
              sl = selected.filter(check).length;
  
        return !selected.some(o => o.name === value && o.param === null)
            && !(pl === sl && pl);
    });

console.log(result);
1
Nina Scholz 24 फरवरी 2019, 19:28