как проверить значение в объекте массива angularjs

у меня есть этот объект array:

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

а также у меня есть функция возврата объекта массива, как это:

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

я создал функцию, которая получает последний результат..но что я хочу, чтобы проверить, если значение в ответ.метки существуют в области$.datas.метки я не хочу вставлять..чтобы избежать дублирования данных в $scope.datas.лейблы, как я могу это сделать??

я пытался это, но я не работал:

$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 ответа

  1. Вы также можете попробовать это:

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

    Он возвращает только те данные, которые не существуют в $scope.datas.ценник.

  2. Загляните в библиотеку 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 {
    
    }
    

    Надеюсь, это поможет.

  3. Попробуйте это он будет работать в соответствии с вашими ожиданиями и требованиями.

    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;
    #result {
      font-weight:bold;
      }
    <div id="result"></div>