Mam pole wyboru, które zapowiadam w następujący sposób

<div repeat.for="list of Items" change.delegate="getClicked()"  >

<md-checkbox  checked.bind="List" model.bind="list" >${list.name}</md-checkbox>
</div>

Mam kolejną listę na stronie TS, która zwraca wszystkie przedmioty i jest przechowywany w następujący sposób

getClicked()
{
let result= this.ItemList  // this object contains a list of items
}

Chciałem to osiągnąć, jest to, że klikam pole wyboru Chcę uzyskać identyfikator i filtrować go na obiekcie listy elementów, aby przywrócić tylko te elementy.

To jest to, co mam

getClicked() {
        
        let Id = this.List.map(x=> x.id);
        let result = this.ItemList.filter(x => x.ItemId === Id)
}

Items=[{ id: 11125e, name:"coke" },
        { id: 11125e,name:"juice" },
        { id: 33e4,name:"chips" }]

Problemem, który mam, jest to, że mój wynik jest zawsze zwracany jako pusty.

Tak się dzieje, gdy na przykład otrzymuję identyfikator

let Id = this.List.map(x=> x.id);// id returned["11125e"]
            let result = this.ItemList.filter(x => x.ItemId ===["11125e"] ) // id gets passed with [] around it

Ale jeśli muszę ręcznie przetestować i robię to bez [] IT działa i otrzymuję wynik

let result = this.ItemList.filter(x => x.ItemId ==="11125e" )

Więc moje pytanie brzmi, jak uzyskać this.List.map(x=> x.id);// id returned["11125e"] to be "11125e"

0
scott 13 październik 2020, 14:50

1 odpowiedź

Najlepsza odpowiedź

Mapa () Metoda tworzy nowa tablica wypełniona wyników wywołania dostarczonej funkcji na każdym elemencie w tablicy wywołującej

Szukasz find

Znajdź () <) <) Metoda zwraca Wartość pierwszego elementu w dostarczonej tablicy, która spełnia dostarczoną funkcję testowania.


let result = this.ItemList.find(x => x.ItemId ==="11125e")
1
Aleksey L. 13 październik 2020, 12:00