簡體   English   中英

根據條件過濾javascript中的對象數組?

[英]filter array of object in javascript based on conditions?

我正在嘗試在 javascript 中過濾一個數組以獲得一個簡單的表單。

數組看起來像這樣,

var Details = [
  {
    Magic: "Mana",
    scheduledtimes: [8,14],
    startdate: "1996-12-02",
  },
  {
    Magic: "Vispasion",
    scheduledtimes: [8],
    startdate: "1996-12-02",
  },
  ...
];

我只想找到正確的魔力,然后如果選擇刪除魔力,就可以刪除值或刪除對象。

這完全刪除了對象,

var Test = Details.find((v) => v.Magic === "Mana")
  ? Details.filter((v) => v.Magic !== "Mana")
  : [...Details, "Mana"];

但是,當我不確定如何簡單地刪除時間值或字符串值,但保持對象整體相同時?

預期的結果是,如果我刪除了一個特定的時間值,

var Details = [
  {
    Magic: "Mana",
    scheduledtimes: [8],
    startdate: "1996-12-02",
  },
  {
    Magic: "Vispasion",
    scheduledtimes: [8],
    startdate: "1996-12-02",
  },

我的理解是,您想根據某些條件編輯或刪除數組中的對象,您可以使用reduce來實現它。

 var Details = [{ Magic: "Mana", scheduledtimes: [8], startdate: "1996-12-02", }, { Magic: "Mana2", scheduledtimes: [8, 14], startdate: "1996-12-02", }, { Magic: "Vispasion", scheduledtimes: [8], startdate: "1996-12-02", }, { Magic: "Untouched", scheduledtimes: [8], startdate: "1996-12-02", }, ]; var Test = Details.reduce((acc, power) => { if (power.Magic === "Mana") return acc; // remove mana powers if (power.Magic === "Mana2") { // remove 14 in times for Mana2 powers return [...acc, { ...power, scheduledtimes: power.scheduledtimes.filter(time => time !== 14) }] } if (power.Magic === "Vispasion") { // modify the power by concatenating an new object with partial info return [...acc, { Magic: power.Magic }]; } return [...acc, power]; // leave the power in the array by default }, []); console.log(Test)

在你的情況下,你只需要返回你想要的

var Test = Details.find(v=> v.Magic === "Mana") ? Details.filter(v => { if(v.Magic !== "Mana") return { return {Magic: a.Magic} }) : [...Details, "Mana"]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM