比较两个JSON文件

时间:2018-01-11 10:36:34

标签: javascript html angularjs json

test.json

{"discountPriceValues":[[{"Price":"0.0"},{"Scode":"S0375102"}],[{"Price":"2.0"},{"Scode":"s0779548"}]],"isEmployeeOJ":"Y"}

app.js

var test = $http.get("data/test.json").then(function (response5) {
  $scope.testing = response5.data;
  return response5;
});
test.then(function(testing){
    $scope.testing = testing.data.discountPriceValues;
}); 

for(var x = 0; x < $scope.callplanList.length; x++){
  for(var t = 0; t < $scope.testing.length; t++ ){
                        console.log($scope.testing[t].Scode);
                            if($scope.callplanList[x].s_code == $scope.testing[t].Scode){
                                console.log($scope.testing[t]);
                            }
                    }
}

HTML

<div class="description">
<p>Test</p>
</div>

我需要检查callplans.json和test.json的scodes,如果有任何常用值,那么我需要在HTML中启用div。但我在控制台中为此代码未定义 - console.log($ scope.testing [t] .Scode);并为$ scope.testing.length;

获取正确的值2

任何帮助将不胜感激

注意:我没有附加其他JSON文件和代码,因为对于此功能,这些不是必需的。

2 个答案:

答案 0 :(得分:0)

由于您的数据格式很奇怪,因此必须:

console.log($scope.testing[t][1].Scode);

另请参阅下面的代码段。

&#13;
&#13;
const data = {
  "discountPriceValues": [
    [{
      "Price": "0.0"
    }, {
      "Scode": "S0375102"
    }],
    [{
      "Price": "2.0"
    }, {
      "Scode": "s0779548"
    }]
  ],
  "isEmployeeOJ": "Y"
};


for (var t = 0; t < data.discountPriceValues.length; t++) {
  console.log(data.discountPriceValues[t][1].Scode);
}
&#13;
&#13;
&#13;

答案 1 :(得分:0)

我看到你的json对象包含嵌套数组。

正如我在评论中所说,只需更改为$scope.testing[t][1].Scode,因为您已嵌套数组。

我建议使用filter方法检查您是否有共同的值。

let callplanListCodes = $scope.callplanList.map(a=>a[1].Scode);
let testingCodes = $scope.testing.map(a=>a[1].s_code;
$scope.hasCommon = callplanListCodes .filter((n) => testingCodes .includes(n))

HTML

<div ng-if="hasCommon" class="description">
  <p>Test</p>
</div>