Я использую фильтр возвращаемый массив получаю ошибку eslint

#javascript #vue.js #vuex #eslint #eslint-config-airbnb

Вопрос:

Я получаю ошибку eslint и как ее исправить?

  const filter = state.playListSetData.filter(item => {
                        // 若兩相符合,抓播放設定底下的其他資料
                        if (item.uuid === payload[i].playerList[j].uuid) {
                            return item;
                        }
                    });

 
  • ошибка, ожидаемая для возврата значения в конце функции array-обратный вызов-возврат
  • ошибка, ожидаемая для возврата значения в конце функции со стрелкой, согласованная-возврат
  for (let i = 0; i < payload.length; i  = 1) {
                // i表示數量window //遍歷每個channel
                // window底下的播放清單
                for (let j = 0; j < payload[i].playerList.length; j  = 1) {
                    // 遍歷每個window底下的播放清單
                    // 比對window的播放清單跟播放設定的播放清單
                    const filter = state.playListSetData.filter(item => {
                        // 若兩相符合,抓播放設定底下的其他資料
                        if (item.uuid === payload[i].playerList[j].uuid) {
                            return item;
                        }
                    });
                    // 塞入所有window1的檔案
                    if (i === 0) {
                        // 遍歷視窗1過濾播放清單底下的檔案
                        for (let x = 0; x < filter[0].player_items.length; x  = 1) {
                            state.playList1.push(filter[0].player_items[x].file);
                        }
                    } else if (i === 1) {
                        // 塞入所有window2的檔案
                        // 遍歷視窗2過濾播放清單底下的檔案
                        for (let x = 0; x < filter[0].player_items.length; x  = 1) {
                            state.playList2.push(filter[0].player_items[x].file);
                        }
                    } else if (i === 2) {
                        // 塞入所有window3的檔案
                        // 遍歷視窗3過濾播放清單底下的檔案
                        for (let x = 0; x < filter[0].player_items.length; x  = 1) {
                            state.playList3.push(filter[0].player_items[x].file);
                        }
                    } else {
                        // 塞入所有window4的檔案
                        // 遍歷視窗4過濾播放清單底下的檔案
                        for (let x = 0; x < filter[0].player_items.length; x  = 1) {
                            state.playList4.push(filter[0].player_items[x].file);
                        }
                    }
                }
            }
 

Ответ №1:

 const filter = state.playListSetData.filter(item => {
                        // 若兩相符合,抓播放設定底下的其他資料
                        if (item.uuid === payload[i].playerList[j].uuid) {
                            return item;
                        }
                        return false;
                    });
 

если вы возвращаете что-то для некоторых случаев, ваш линтер хочет, чтобы вы явно возвращали что-то для всех случаев. return undefined Я думаю, это ближе к тому, что он делал раньше, но для фильтра это все равно

или просто

 const filter = state.playListSetData.filter(item => {
                        // 若兩相符合,抓播放設定底下的其他資料
                        return item.uuid === payload[i].playerList[j].uuid;
                    });
 

фильтр заботится только о том, является ли он правдивым, и на самом деле не использует значение элемента, и поскольку вы получаете доступ к свойствам, похоже, что он всегда правдив, поэтому просто верните значение true.

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

1. return item это вводит в заблуждение, так как обратный вызов фильтра ожидает, что будет возвращено логическое значение.