#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
функции он может выполняться асинхронно и возвращать пустой массив.