Сортировка не работает с forEach, а работает с картой - PullRequest
0 голосов
/ 15 ноября 2018

У меня есть фрагмент кода ниже

Object.entries(obj)
            .map((arr) => {
                if (columnArray.indexOf(arr[0].toLowerCase()) > -1) {
                    return { value: arr[1], name: arr[0] };
                }
            })
            .sort(function(a, b) {
                return columnArray.indexOf(a.name.toLowerCase()) - columnArray.indexOf(b.name.toLowerCase());
            })

с сортировкой карты работает нормально, но когда я изменил код, как показано ниже

Object.entries(obj).filter((arr)=>columnArray.indexOf(arr[0].toLowerCase()) > -1)
                .forEach((arr) => { 
                    console.log('array value-->',arr);      
                        return { value: arr[1], name: arr[0] };                 
                })
                .sort(function(a, b) {
                    return columnArray.indexOf(a.name.toLowerCase()) - columnArray.indexOf(b.name.toLowerCase());
                })

я получил ошибку вроде 'sortне определено ", Может ли кто-нибудь помочь мне здесь.

Ответы [ 2 ]

0 голосов
/ 15 ноября 2018

forEach() выполняет функцию обратного вызова один раз для каждого элемента массива & returns значение undefined и не равно chainable.

В вашем случае вы объединяете sort с forEachкоторый не будет работать.

Проверьте больше здесь forEach

0 голосов
/ 15 ноября 2018

Это потому, что "forEach" ничего не возвращает, а map возвращает новый массив, поэтому он работает с map, а не forEach. С помощью "forEach" вы можете изменять объекты в цикле, как показано ниже

let newArr = []
Object.entries(obj).filter((arr)=>columnArray.indexOf(arr[0].toLowerCase()) > -1)
                .forEach((arr) => { 
                    console.log('array value-->',arr);      
                        newArr.push({ value: arr[1], name: arr[0] });                 
                })

newArr.sort(function(a, b) {
              return columnArray.indexOf(a.name.toLowerCase()) - columnArray.indexOf(b.name.toLowerCase());
           })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...