Сопоставьте сообщение wordpress с массивом

#javascript

#javascript

Вопрос:

Итак, у меня есть следующая функция:

 /**
 * Get array of post objects
 *
 * @param slug
 */
function get_array_of_post_objects(slug)
{
    let items = [];
    wp.api.loadPromise.done(function () {
        const Posts = wp.api.models.Post.extend({
            url: wpApiSettings.root   'menus/v1/locations/'   slug,
        });
        const all_posts = new Posts();
        all_posts.fetch().then((posts) => {
            items.push(...posts.items);
        });
    });
    return items;
}
 

При вызове таким образом:

 const test = get_array_of_post_objects('application_launcher');
console.log(test);
 

Дает мне array of objects , как показано ниже:
введите описание изображения здесь


Вопрос:

Какой был бы хороший способ сопоставить мои объекты? Допустим, я хочу сопоставить только ID и db_id .. какой хороший подход? Я не слишком много возился с картографированием, так что нужно кое-чему научиться.

Вот с чем я возился:

 const test2 = test.map((ID, db_id) => {
    return {
        ID,
        DBID: db_id,
    }
});
 

Ответ №1:

В javascript вы бы сделали это так:

 const test = [
      {ID:1, db_id: 11, test: 'test'},
      {ID:2, db_id: 22, test: 'test'},
      {ID:3, db_id: 33, test: 'test'}
    ];
    const test2 = test.map((obj) => {
      return {ID: obj.ID, DBID: obj.db_id};
    });

    console.log(test2); 

Обратный вызов map функции принимает каждый элемент массива в качестве первого параметра.

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

1. Должен ли я сначала перебирать массив объектов? Я получаю пустой ответ массива.

2. Это должно работать до тех пор, пока ваша test переменная является допустимым непустым массивом. Обновил мой ответ, чтобы вы могли его протестировать. На основе кода в вашей get_array_of_post_objects функции он может выполняться асинхронно и возвращать пустой массив.