Сортировать свойства объекта в массиве на основе другого пользовательского массива [дубликата]

Попросите его создать файл с phpinfo(). Вероятно, у него нет версии PHP> = 5.3.0.

0
задан adiga 21 January 2019 в 17:58
поделиться

2 ответа

Используя индексы ссылочного массива в качестве порядка сортировки, реализуйте логику сортировки в функции сортировки, извлекайте ключи объекта и сортируйте их в соответствии с заданным массивом и помещайте отсортированный объект в исходный массив.

var item_array = [{ "Email Address": "c", "First Name": "a", "Last Name": "b", "Permission": "Training Administrator",  "Telephone": "d", "User Group": "Company Administrator" }, {"Email Address": "3", "First Name": "1", "Last Name": "2", "Permission": "6", "Telephone": "4", "User Group": "5"}];
var item_order = ["First Name", "Last Name", "Email Address", "Permission", "Telephone", "User Group"];
item_array.forEach((obj, idx, arr) => {
           arr[idx] = Object.keys(obj)
                            .sort((a, b) => {
                             return item_order.indexOf(a) - item_order.indexOf(b);
                             })
                            .reduce((acc, ele)=>{acc[ele] = obj[ele]; return acc;},{});
                  });

console.log(item_array);
      

0
ответ дан Amardeep Bhowmick 21 January 2019 в 17:58
поделиться

Вы можете использовать map и reduce следующим образом:

const item_array = [{"Email Address":"c","First Name":"a","Last Name":"b","Permission":"Training Administrator","Telephone":"d","User Group":"Company Administrator"},{"Email Address":"3","First Name":"1","Last Name":"2","Permission":"6","Telephone":"4","User Group":"5"}],
      item_order = ["First Name","Last Name","Email Address","Permission","Telephone","User Group"];

const ordered = item_array.map(item =>
    item_order.reduce((acc, key) => ( acc[key] = item[key], acc ), {})
);

console.log(ordered)
[ 118]
0
ответ дан adiga 21 January 2019 в 17:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: