首页 > 解决方案 > 使用javascript根据数组的其他对象中的其他键值对验证重复键值对的对象数组

问题描述

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"}]

从其区域设置为“美国”的对象中获取“currentFruit”。我想验证“currentFruit”是否存在于具有相同语言环境“US”的“Array”中以将标志设置为“true”,否则如果“currentFruit”存在于具有不同语言环境的“Array”中将为“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”。但是,我如何验证“currentFruit”是否存在于具有相同区域设置“US”的数组中。

标签: javascriptarraysvalidationkey-value

解决方案


您可以将比较添加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;
}


推荐阅读