각도를 사용하여 배열의 객체 인덱스를 가져오려면 어떻게 해야 합니까?
배열의 이 부분을 삭제하려면 배열에 개체 인덱스가 있어야 합니다.사용해 보았습니다.
var index = this.urenRegistratie.indexOf(newDatum);
하지만 계속해서 -1로 돌아오고 왜 이런 일이 일어나는지 모르겠습니다.
이것이 제가 가지고 있는 코드의 일부입니다.HTML의 양식에서 데이터를 가져와 배열에 저장합니다. 이제 if 문이 이미 준비되어 있습니다(기존 Datum ). 코드가 거기에 있어야 합니다.누가 저 좀 도와주실 수 있나요?
store(newValue:number, newDatum, newAanwezig, newComment){
const existingDatum = this.urenRegistratie.find(billable => {
return billable.datum === newDatum;
return
});
if (!existingDatum) {
let billable = new BillableHours();
billable.datum = newDatum;
billable.hours = +newValue;
billable.aanwezig = newAanwezig;
billable.comment = newComment;
if(billable.aanwezig == "Aanwezig" && billable.hours !== 0 && billable.datum !== null) {
this.urenRegistratie.push(billable);
}
}
if(existingDatum) {
}
}
findIndex() 메서드는 제공된 테스트 함수를 충족하는 배열의 첫 번째 요소의 인덱스를 반환합니다.그렇지 않으면 검정을 통과한 요소가 없음을 나타내는 -1을 반환합니다.
이와 같은 개체의 배열이 있는 경우 다음을 사용해 보십시오.findIndex
:
const a = [
{ firstName: "Adam", LastName: "Howard" },
{ firstName: "Ben", LastName: "Skeet" },
{ firstName: "Joseph", LastName: "Skeet" }
];
const index = a.findIndex(x => x.LastName === "Skeet");
console.log(index);
@StepUp의 답변에 다음을 추가합니다(그리고 질문에 대한 답변이 매우 많으므로 그의 답변을 가장 잘 선택하십시오).
인덱스를 찾는 것은 Angular와 관련이 없으며 오히려 Vanilla JavaScript입니다.
당신의 경우, 당신은 다음과 같은 매개변수를 갖는 함수가 필요합니다.newDatum
findIndex를 사용하여 배열 "헤이스택"에서 "니들"을 검색합니다.
var getNewDatumIndex = (array, newDatumNeedle) => {
return array.findIndex(x => x.newDatum === newDatumNeedle);
}
원하는 경우 배열 프로토타입에 메서드를 추가하여 첫 번째 인수를 생략할 수도 있습니다.
Array.prototype.getNewDatumIndex = (newDatumNeedle) => {
return this.findIndex(x => x.newDatum === newDatumNeedle);
}
쉽고 우아한 솔루션은 lodash 라이브러리를 사용하여 심층 비교를 수행하는 _.isEqual을 사용하는 것입니다.
Npm 패키지 -- https://www.npmjs.com/package/lodash
const a = [
{ firstName: "Adam", LastName: "Howard" },
{ firstName: "Ben", LastName: "Skeet" },
{ firstName: "Joseph", LastName: "Skeet" }
];
const find = { firstName: "Joseph", LastName: "Skeet" }
index = a.findIndex(x => _.isEqual(x, find));
console.log(index);
store(newValue: number, newDatum, newAnwezig, newComment) {let index = this.urenRegistry.인덱스 Of(기존 데이텀);
const existingDatum = this.urenRegistratie.find(billable => {
return billable.datum === newDatum;
return
});
if (index != -1) {
let index = this.urenRegistratie.indexOf(existingDatum);
existingDatum.splice(index, 1)
} else {
let billable = new BillableHours();
billable.datum = newDatum;
billable.hours = +newValue;
billable.aanwezig = newAanwezig;
billable.comment = newComment;
if (billable.aanwezig == "Aanwezig" && billable.hours !== 0 && billable.datum !== null) {
this.urenRegistratie.push(billable);
}
}
}
때때로, 당신이 id로 비교한다면, 당신은 parseint가 필요합니다, 왜냐하면 객체의 id는 문자열이기 때문입니다. 이것에 주의하세요.
언급URL : https://stackoverflow.com/questions/58971067/how-do-i-get-the-index-of-object-in-array-using-angular
'programing' 카테고리의 다른 글
경로 전환 시 Vuex 재설정 저장소 변수 (0) | 2023.07.10 |
---|---|
ASP의 사용자 지정 인증입니다.넷코어 (0) | 2023.07.10 |
SQL Server 통합 서비스를 사용하여 Oracle 데이터베이스에 연결 (0) | 2023.07.10 |
"Table'dbo"를 해결하려면 어떻게 해야 합니까?Foo'가 이미 존재합니다." 테이블이 존재하지 않을 때 오류가 발생합니까? (0) | 2023.07.10 |
문자열의 첫 번째 문자 가져오기 및 제거 (0) | 2023.07.10 |