使用JavaScript,根据数组中其他对象之间的其他键值对验证重复键值对的对象数组

问题描述 投票:0回答:2
let currentFruit = "apple"
let Array = [{fruit:"apple",locale:"US"},
        {fruit:"orange",locale:"US"},
        {fruit:"banana",locale:"US"},
        {fruit:"apple",locale:"US"},
        {fruit:"orange",locale:"IT"},
        {fruit:"apple",locale:"IT"},
        {fruit:"banana",locale:"IT"},
        {fruit:"orange",locale:"IT"}
        {fruit:"apple",locale:"IT"}]

具有对象的语言环境为“ US”的“ currentFruit”。我想验证“ Array”中是否存在具有相同区域设置“ US”的“ currentFruit”,以将标志设置为“ true”,否则,如果“ Array”中存在具有不同区域设置的“ currentFruit”,则设置为“ false”。

for (let i = 0; i < Array.length; i++) {
            if (Array[i]["fruit"].toString().toLowerCase() === currentFruit.toString().toLowerCase()) {
                this.uniqueFruit = true;
                break;
            } else {
                this.uniqueFruit = false;
            }  
        }

上面的代码评估对象数组中是否存在“ currentFruit”。但是,如何验证具有相同语言环境“ US”的数组中是否存在“ currentFruit”。

javascript arrays validation key-value
2个回答
1
投票

您可以按如下所示将locale的比较添加到循环中:

let currentFruit = "apple"
let Array = [{fruit:"apple",locale:"US"},
        {fruit:"orange",locale:"US"},
        {fruit:"banana",locale:"US"},
        {fruit:"apple",locale:"US"},
        {fruit:"orange",locale:"IT"},
        {fruit:"apple",locale:"IT"},
        {fruit:"banana",locale:"IT"},
        {fruit:"orange",locale:"IT"},
        {fruit:"apple",locale:"IT"}]

console.log(validate(Array,currentFruit,"US"));
console.log(validate(Array,currentFruit,"FR"));

function validate(arr, currentFruit, locale){
     for(let i = 0; i < arr.length; i++)
          if(arr[i]["fruit"].toLowerCase() == currentFruit.toLowerCase() && arr[i]["locale"] == locale)
               return true;
     return false;
}

0
投票

您可以为想要的水果添加属性,并根据locale属性添加属性。

let currentFruit = "apple",
    locale = "US",
    array = [{ fruit: "apple", locale: "US" }, { fruit: "orange", locale: "US" }, {fruit: "banana", locale: "US" }, { fruit: "apple", locale: "US" }, { fruit: "orange", locale: "IT" }, { fruit: "apple", locale: "IT" }, { fruit: "banana", locale: "IT" }, { fruit: "orange", locale: "IT" }, { fruit: "apple", locale: "IT" }]

array.forEach(o => {
    if (o.fruit !== currentFruit) return;
    o.uniqueFruit = o.locale === locale;
});

console.log(array);
© www.soinside.com 2019 - 2024. All rights reserved.