[英]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.