Ошибка при получении значения внутри объекта из массива объектов из выпадающего списка в Typescript

#arrays #typescript #for-loop #object #boolean

#массивы #typescript #for-цикл #объект #логическое

Вопрос:

Я получаю выбранные значения из выпадающего списка в angular через событие.

 getSelectedValueList($event: any[]) {
        console.log($event);
        const ids = this.selectedIds($event);
        console.log(ids);
    }
  

Здесь мой console.log($event); вывод выглядит следующим образом.

 (3) [{…}, {…}, {…}]
0: {id: 3045, name: "US", isSelected: true, isDefault: false} 
1: {id: 2755, name: "INDIA", isSelected: false, isDefault: false}
2: {id: 0, name: "None", isSelected: true, isDefault: false}
length: 3
  

Это мой selectedIds метод.

 selectedIds(list): any[] {
        console.log(list);
        console.log(list[2].isDefault);
        const codeList: any[] = [];
        for (const element of list) {
            console.log(element);
            if (element.isSelected) {
                codeList.push(element.id);
            }
        }
        console.log(codeList);
        return codeList;
    }
  

Здесь также мой console.log(list); вывод выглядит так, как указано выше.

 (3) [{…}, {…}, {…}]
0: {id: 3045, name: "US", isSelected: true, isDefault: false} 
1: {id: 2755, name: "INDIA", isSelected: false, isDefault: false}
2: {id: 0, name: "None", isSelected: true, isDefault: false}
length: 3
  

Но если я console.log(element); это дает каждый вывод, подобный этому. То isSelected: true , что приходит, console.log(list); отображается как false.

  {id: 3045, name: "US", isSelected: false, isDefault: false}
 {id: 2755, name: "INDIA", isSelected: false, isDefault: false}
 {id: 0, name: "None", isSelected: false, isDefault: false}
  

В чем здесь проблема? Я не смог найти?

Комментарии:

1. Они не выбраны в пользовательском интерфейсе при проверке вашего журнала? console.log(myObject) будет динамически обновляться, если базовое значение myObject изменяется, даже если есть часы, разделяющие журнал и вашу проверку журнала. Чтобы обойти это, попробуйте console.log({...myObject}) вместо этого. При этом будет зарегистрирован клон объекта, который никогда не будет изменен. Я не знаю, является ли это вашей проблемой, но это то, что вы могли бы рассмотреть.

2. В пользовательском интерфейсе они не отменяются

3. @user1713450 I console.log({...myObject}) Это также дает тот же результат, что и выше

4. Я не думаю, что это связано с проблемой, но, к вашему сведению, вы можете сделать свою selectedIds функцию намного проще: selectedIds(list): number[] { return list.filter(element => element.isSelected).map(element => element.id); }