angularjs에서 배열 푸시의 중복을 방지하는 방법
내 코드는 다음과 같습니다.
var arr = [];
arr.push(item1,item2);
그렇게arr
다음과 같이 포함됩니다: ["이름", "thing1"]
그러나 정확한 값이 같은 요소를 푸시할 때 문제가 발생했습니다. 동일한 요소 값을 필터링하면서도 업데이트/변경을 수락하는 방법은 무엇입니까?JSFIDDLE
사용가능arr.indexOf
찾을 수 없으면 -1을 반환하므로 추가할 수 있습니다.
예.
if (arr.indexOf(item) == -1) {
arr.push(item);
}
그러나 이전 브라우저에서는 작동하지 않습니다.
JQuery에는 메서드가 있습니다($.indexOf
모든 브라우저에서 작동합니다. 아주 오래된 브라우저에서도 작동합니다.
자바스크립트만 있으면 됩니다.
배열에 항목이 포함된 경우 인덱스는 >= 0입니다.
인덱스 == -1이면 배열에 항목이 존재하지 않으므로 고유 항목을 푸시할 수 있습니다.
if(arr.indexOf(item) == -1) {
arr.push(item);
}
편집: 번호 변경을 요청하셨네요, 이게 방법입니다.
var index = arr.indexOf(item);
if(index > -1) { //checking if item exist in array
arr[index]++; // you can access that element by using arr[index],
// then change it as you want, I'm just incrementing in above example
}
대부분의 답변이 지적한 것처럼, 당신은 다음을 사용할 수 있습니다.Array.prototype.indexOf()
값이 존재하는지 여부를 확인하는 방법입니다.이를 확인하기 위해서는 문자열의 배열을 확인합니다.ng-models
가치 속성,selects.value
, 내부에ng-change()
이벤트 콜백.
자바스크립트
$scope.goChange = function(name, value){
if(!~arr.indexOf(value)) {
arr.push(name, value);
console.log(arr);
}
};
HTML
<select ng-model="selects" ng-change="goChange(item.name, selects.value)" ng-options="i as i.value for i in options">
<option value=""></option>
</select>
Angular Filters를 사용해야 합니다.
일부 구현은 이와 유사한 질문에 대한 답변으로 확인할 수 있습니다.중복된 결과를 ng-repeat 필터로 제거하는 방법
배열에서 중복을 필터링하려면(es6):
let arr = ['foo', 'foo', 'bar', 'baz'];
Array.from(new Set(arr));
console.log(arr);
// ['foo', 'bar', 'baz'];
언급URL : https://stackoverflow.com/questions/25667253/how-to-prevent-duplicate-in-array-push-in-angularjs
'programing' 카테고리의 다른 글
angularjs에서 여러 부분 보기에 대한 단일 html 보기 만들기 (0) | 2023.10.31 |
---|---|
C/P 스레드 사용: 공유 변수가 변동성이 있어야 합니까? (0) | 2023.10.26 |
Woocommerce: html 출력을 대체하는 데 도움 (0) | 2023.10.26 |
데이터베이스에 암호를 저장하는 가장 좋은 방법 (0) | 2023.10.26 |
pHPUnit에서 clover.xml을 생성할 때 상대 경로를 정의하시겠습니까? (0) | 2023.10.26 |