【问题标题】:Match if two arrays contains exact text values, JSON如果两个数组包含精确的文本值,则匹配 JSON
【发布时间】:2021-05-22 16:29:26
【问题描述】:

目标:查看我是否可以匹配两个数组并返回布尔值 truefalse

问题:我想问是否有更好的解决方案来匹配两个数组以获得相同的值,例如。

"arr1": ["hello, world, droids"],
"arr2": ["hello, there, Kenobi"]

我发现的一种方法来自另一个 SO 答案 here。但是当我们有像 underscore 和 lodash 这样的实用程序库时,这种方法似乎太牵强了。

我的想法是这样的:

const __ = require('underscore')

if(__.difference(arr1, arr2).length > 0) {
 console.log('not same')
} else {
 console.log('same')
}

我对编程非常陌生,所以我不确定其中哪一个应该可用于生产,或者我的想法是否首先正确。

接下来我也会添加我找到的 SO 答案。

var areJSONArraysEqual = function(jsonArray1,
                                    jsonArray2) {

                                if(jsonArray1.length===0||jsonArray2.length===0){
                                    if(jsonArray1.length===0 && jsonArray2.length===0){
                                        return true;
                                    }else{
                                        return false;
                                    }
                                }

                                for(var i=0;i<jsonArray1.length;i++){
                                    for ( var key in jsonArray1[i]) {
                                        if(jsonArray1[i][key].length>1){
                                            return areJSONArraysEqual(jsonArray1[i][key],jsonArray2[i][key])
                                        }
                                        if (jsonArray1[i][key] != jsonArray2[i][key]) {
                                            return false;
                                        }
                                    }
                                }
                                return true;
                            };

【问题讨论】:

    标签: javascript arrays json lodash underscore.js


    【解决方案1】:

    看来您正在尝试做的是深度相等比较。您可以在 Underscore(和 Lodash)中使用 _.isEqual 执行此操作。例如:

    const _ = require('underscore');
    
    const arr1 = ["hello, world, droids"];
    const arr2 = ["hello, there, Kenobi"];
    
    console.log(_.isEqual(arr1, arr2)); // false
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-11-24
      • 2014-05-25
      • 1970-01-01
      • 2021-12-10
      • 2019-07-16
      • 2016-07-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多