programing

각도를 사용하여 배열의 객체 인덱스를 가져오려면 어떻게 해야 합니까?

batch 2023. 7. 10. 22:12
반응형

각도를 사용하여 배열의 객체 인덱스를 가져오려면 어떻게 해야 합니까?

배열의 이 부분을 삭제하려면 배열에 개체 인덱스가 있어야 합니다.사용해 보았습니다.

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) {

    }

  }

mdn이 말하는 것처럼:

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입니다.

당신의 경우, 당신은 다음과 같은 매개변수를 갖는 함수가 필요합니다.newDatumfindIndex를 사용하여 배열 "헤이스택"에서 "니들"을 검색합니다.

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

반응형