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