Я написал это маленькое приложение, которое принимает набор символов звездных войн и возвращает изображения в массиве.
const app = require('express')();
const fetch = require('node-fetch');
const imageSearch = require('image-search-google');
const bodyParser = require('body-parser')
var urlencodedParser = bodyParser.urlencoded({ extended: true })
app.use(bodyParser.json())
const options = {page:1};
const getImages = (keywords) =>
Promise.all(keywords.map(keyword => client.search(`${keyword} Wookieepedia`, options)))
.then(data => firstResult = data.map(result => result[0].url));
const fun = async () => {
const res = await getImages(['yoda' , 'luke skywalker' , 'darth vader']);
console.log(res);
}
fun()
Результат приведенного выше кода выглядит следующим образом:
[ 'https://vignette.wikia.nocookie.net/starwars/images/d/d6/Yoda_SWSB.png/revision/latest?cb=20150206140125',
'https://vignette.wikia.nocookie.net/starwars/images/d/d9/Luke-rotjpromo.jpg/revision/latest?cb=20091030151422',
'https://vignette.wikia.nocookie.net/starwars/images/a/a3/ANOVOS_Darth_Vader_1.png/revision/latest?cb=20150128225029' ]
Но я хотел бы получить результат, в котором я могу узнать, какое изображение принадлежит какому ключевому слову. Может быть, такой формат или что-то похожее:
[{<keyword> : <url>}]
Я пробовал это:
const getImages = (keywords) =>
Promise.all(keywords.map(keyword => {return { [keyword] : [client.search(`${keyword} Wookieepedia`, options)]} } ))
.then(data => firstResult = data.map(result => result));
const fun = async () => {
const res = await getImages(['yoda' , 'luke skywalker' , 'darth vader']);
console.log(res);
}
fun()
Результаты были близки, но не хороши:
[ { yoda: [ [Promise] ] },
{ 'luke skywalker': [ [Promise] ] },
{ 'darth vader': [ [Promise] ] } ]