programing

배열에 값이 있는지 확인합니다(각도).JS)

powerit 2023. 4. 3. 21:48
반응형

배열에 값이 있는지 확인합니다(각도).JS)

현재 사용하고 있는 것은forEach()-array of angular를 사용하여 새 값을 확인합니다.그러나 이는 잘못된 접근법입니다. 예를 들어 목록에 20개의 개체가 있습니다.기존 아티클을 사용하여 개체를 만드는 경우 forEach의 if-statement는 아티클이 1회 존재하는 경우와 존재하지 않는 경우를 19회 나타냅니다.

다음 코드:

var list = [];

articlelist.forEach(function (val) {
   list.push(val.artNr);
});

$log.info(list);

articlelist에는 20개의 오브젝트가 모두 포함되어 있습니다.비교하기 위해서, 나는 단지 필요한 것은artNr왜냐하면 사용자가 새로운 문서를 작성할 때 추가된 artNr이 이미 존재하는지 확인하기 위한 if-Statement여야 하기 때문입니다.

$scope.createItem = function (createItem) {
  if(list.artNr === createItem.artNr) {
      $scope.message = 'artNr already exists!';
  }
...
};

문제는 이 list.artNr이 목록 변수가 배열이기 때문에 "정의되지 않음"을 반환한다는 것입니다.

콘솔 = > 출력 목록 표시Array ["AB001", "AB002", "AB003", "AB004"],

createItem 출력: =>Object { artNr: "AB001", description: "New Article" ...}

새로 생성된 개체와 목록 변수의 배열을 비교하려면 어떻게 해야 합니까?

사용할 수 있습니다.indexOf기능.

if(list.indexOf(createItem.artNr) !== -1) {
  $scope.message = 'artNr already exists!';
}

indexOf 상세:

index Of()를 사용할 수 있습니다.예를 들어 다음과 같습니다.

var Color = ["blue", "black", "brown", "gold"];
var a = Color.indexOf("brown");
alert(a);

indexOf() 메서드는 지정된 항목을 배열에서 검색하여 위치를 반환합니다.그리고 아이템이 발견되지 않으면 -1을 반환한다.


처음부터 끝까지 검색하려면 lastIndexOf() 메서드를 사용합니다.

    var Color = ["blue", "black", "brown", "gold"];
    var a = Color.lastIndexOf("brown");
    alert(a);

검색은 지정된 위치에서 시작되거나 시작 위치가 지정되지 않은 경우 끝에서 시작되고 배열 시작 부분에서 검색이 종료됩니다.

항목을 찾을 수 없는 경우 -1을 반환합니다.

이런 것도 쓸 수 있어요.

  function (field,value) {

         var newItemOrder= value;
          // Make sure user hasnt already added this item
        angular.forEach(arr, function(item) {
            if (newItemOrder == item.value) {
                arr.splice(arr.pop(item));

            } });

        submitFields.push({"field":field,"value":value});
    };

언급URL : https://stackoverflow.com/questions/32610282/check-if-value-exists-in-the-array-angularjs

반응형