如何在嵌套的对象数组中找到一个值并更新它?

dan_boy

我正在尝试在嵌套的对象数组中找到一个值并更新它。更具体地说,在下面的数组中,我试图OptionCode根据字符串查找并将相应的选项设置为blocked搜索字符串存储在一个数组中。

初始数组:

filters: [
    {
        FilterCode: "TourPrice",
        FilterName: "Tour Price",
        FilterIcon: show_Dollar,
        Options: [
            {
                Name: "Free",
                OptionCode: "Free",
                active: false,
                blocked: false,
                forbiddenFilterOptionCode: ["LowestPrice"],
            },
            {
                Name: "Paid",
                OptionCode: "Paid",
                active: false,
                blocked: false,
                forbiddenFilterOptionCode: [],
            },
            {
                Name: "Free and Paid",
                OptionCode: "FreeAndPaid",
                active: true,
                blocked: false,
                forbiddenFilterOptionCode: [],
            },
        ],
    },
    {
        FilterCode: "SortedBy",
        FilterName: "Sorted By",
        FilterIcon: show_Sort,
        Options: [
            {
                Name: "Most Relevant",
                OptionCode: "MostRelevant",
                active: true,
                blocked: false,
                forbiddenFilterOptionCode: [],
            },
            {
                Name: "Latest Tour",
                OptionCode: "LatestTour",
                active: false,
                blocked: false,
                forbiddenFilterOptionCode: [],
            },
            {
                Name: "Oldest Tour",
                OptionCode: "OldestTour",
                active: false,
                blocked: false,
                forbiddenFilterOptionCode: [],
            },
            {
                Name: "Lowest Price",
                OptionCode: "LowestPrice",
                active: false,
                blocked: false,
                forbiddenFilterOptionCode: ["Free", "FreeAndPaid],
            },
        ],
    },
],

对于以下搜索输入["Free", "FreeAndPaid"],需要以下数组。

预期结果数组

filters: [
    {
        FilterCode: "TourPrice",
        FilterName: "Tour Price",
        FilterIcon: show_Dollar,
        Options: [
            {
                Name: "Free",
                OptionCode: "Free", // Find OptionCode
                active: false,
                blocked: true, // set blocked to true
                forbiddenFilterOptionCode: ["LowestPrice"],
            },
            {
                Name: "Paid",
                OptionCode: "Paid",
                active: false,
                blocked: false,
                forbiddenFilterOptionCode: [],
            },
            {
                Name: "Free and Paid",
                OptionCode: "FreeAndPaid", // Find OptionCode
                active: true,
                blocked: true, // set blocked to true
                forbiddenFilterOptionCode: [],
            },
        ],
    },
    {
        FilterCode: "SortedBy",
        FilterName: "Sorted By",
        FilterIcon: show_Sort,
        Options: [
            {
                Name: "Most Relevant",
                OptionCode: "MostRelevant",
                active: true,
                blocked: false,
                forbiddenFilterOptionCode: [],
            },
            {
                Name: "Latest Tour",
                OptionCode: "LatestTour",
                active: false,
                blocked: false,
                forbiddenFilterOptionCode: [],
            },
            {
                Name: "Oldest Tour",
                OptionCode: "OldestTour",
                active: false,
                blocked: false,
                forbiddenFilterOptionCode: [],
            },
            {
                Name: "Lowest Price",
                OptionCode: "LowestPrice",
                active: false,
                blocked: false,
                forbiddenFilterOptionCode:  ["Free", "FreeAndPaid"],
            },
        ],
    },
],
特里科特

您可以使用下面的功能。我做filters了一个变量,因为从你的问题中不清楚它是什么对象的属性。

解决方案是迭代数组,然后迭代选项对象,最后检测该对象的 OptionCode 值是否在您的目标值中。

filters这样的结构被修改来代替

function setBlocked(filters, target) {
    for (let filter of filters) {
        for (let option of filter.Options) {
            if (target.includes(option.OptionCode)) {
                option.blocked = true;
            }
        }
    }
}

let filters = [{FilterCode: "TourPrice",FilterName: "Tour Price",FilterIcon: "show_Dollar",Options: [{Name: "Free",OptionCode: "Free",active: false,blocked: false,forbiddenFilterOptionCode: ["LowestPrice"],},{Name: "Paid",OptionCode: "Paid",active: false,blocked: false,forbiddenFilterOptionCode: [],},{Name: "Free and Paid",OptionCode: "FreeAndPaid",active: true,blocked: false,forbiddenFilterOptionCode: [],},],},{FilterCode: "SortedBy",FilterName: "Sorted By",FilterIcon: "show_Sort",Options: [{Name: "Most Relevant",OptionCode: "MostRelevant",active: true,blocked: false,forbiddenFilterOptionCode: [],},{Name: "Latest Tour",OptionCode: "LatestTour",active: false,blocked: false,forbiddenFilterOptionCode: [],},{Name: "Oldest Tour",OptionCode: "OldestTour",active: false,blocked: false,forbiddenFilterOptionCode: [],},{Name: "Lowest Price",OptionCode: "LowestPrice",active: false,blocked: false,forbiddenFilterOptionCode: ["Free", "FreeAndPaid"],},],},];

setBlocked(filters, ["Free", "FreeAndPaid"]);

console.log(filters);

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

我们如何在嵌套和可变数组中找到一个值?

如何在数组中找到一个值?

如何在对象数组中找到一个值 mongoose

如何在对象中找到作为数组的第一个属性?

如何在多维数组中找到一个键?

如何在对象的值中找到一个单词并在 React 中应用条件?

如何在NumPy数组中找到第一个局部最大值?

如何在python的二维数组中找到一个值?

如何在 Perl 哈希中找到一个值?

如何在 Firebase 中找到一个值?

是否可以从另一个对象数组的 ID 中找到对象数组中的值?

如何在一个数组中找到最大值,对应于另一个数组中的唯一值/点?

如何在多个数组中找到最大值并返回java中第一个索引的值?

如何在mongodb的对象中更新我的另一个嵌套数组的嵌套数组

如何在 MongoDB 中的另一个嵌套数组中更新嵌套数组中的对象

如何在json中找到一个键并打印它python

如何在Redux状态的嵌套数组中仅更新一个值?

如何在数组中找到一个值并将其复制到 C 语言中的另一个值?

从对象数组中找到一个键值并渲染

如何在具有另一个索引数组的数组中找到元素?

如何在vue中的另一个数组项中找到数组项?

在JSON stringify数组中找到一个值

如何在Swift对象数组中找到最大值?

如何在JavaScript数组中找到对象值?

Numpy - 如果在另一个数组中找到数组的元素,我如何擦除它

如何在熊猫数据框中找到连续值的最后一个值?

如何在一行中找到一个值并使用VBA返回列号?

如何在一个对象中找到几棵树的根

如何在lodash地图对象中找到最后一个孩子?