如何检查数组对象angularjs中的值

时间:2016-11-08 16:35:07

标签: angularjs arrays json

我有这个数组对象:

$scope.datas.labels=['10','20','30']

我还有一个函数返回一个这样的数组对象:

response.labels=['10','20','30','50','100','80']

我创建了一个函数来接收最后的结果..但我想要的是检查$ scope.datas.labels中是否存在response.labels中的值我不想插入它...以避免重复数据$ scope.datas.labels,我该怎么做?

我尝试了这个,但我没有工作:

$scope.concatToData=function (response) {
    if($scope.datas.labels=='') {
        $scope.datas.labels = $scope.datas.labels.concat(response.labels);
    }else {
        var i;
        for (i = 0; i < $scope.datas.labels.length; i++) {
            alert('qa' + JSON.stringify($scope.datas.labels));
            alert('res' + JSON.stringify(response.labels));
            if ($scope.datas.labels[i] !== response.labels[i]) {
                $scope.datas.labels = $scope.datas.labels.concat(response.labels[i]);
            } else {
                break;
            }
        }
    }
    $scope.datas.datasets = $scope.datas.datasets.concat(response.datasets);
}

3 个答案:

答案 0 :(得分:0)

您也可以尝试:

        var response = ['foo', 'fabio'];
        var labels = ['foo'];
        var result = response.filter((value) => {
            return labels.filter((rs) => {
                return rs == value;
            }).length == 0;
        });

它只返回$ scope.datas.labels上不存在的数据。

答案 1 :(得分:0)

查看lodash库,您会发现它很有用,这对您也很有用:

let common = _.intersection($scope.datas.labels, response.labels);
if (_.size(common) && _.includes(common, 'myValue')) { 
  // You have a winner;
  // This item (myValue) is in both;
} else {

}

希望有所帮助。

答案 2 :(得分:0)

尝试这一点,它将按照您的期望和要求运作。

&#13;
&#13;
var arr1=['10','20','30'];

var arr2=['10','20','30','50','100','80'];

for (var i in arr2) {
  if(arr2[i] != arr1[i]) {
    arr1.push(arr2[i]);
  }
}

document.getElementById('result').innerHTML = arr1;
&#13;
#result {
  font-weight:bold;
  }
&#13;
<div id="result"></div>
&#13;
&#13;
&#13;