Вы можете присвоить s
свойству cinemaState
в своем выражении return
, используя следующий метод:
cinemaState: this.s,
Кроме того, Array.from()
имеет встроенную функцию map
, поэтому вы должны вызывать функцию map
изнутри Array.from()
, чтобы избежать промежуточного массива:
Array.from(arrayLike, mapFn); // good
Array.from(arrayLike).map(mapFn); // bad
Наконец, вы можете захотеть использовать кавычки около cinemaState
в селекторе атрибутов в строке литерала шаблона:
[data-state="${cinemaState}"] // good
[data-state=${cinemaState}] // bad
Ваш окончательный код должен выглядеть примерно так:
let res = await page.evaluate(elementPath => {
return Array.from(document.querySelectorAll(elementPath), (cin, index) => {
return {
cinemaState: this.s,
cinemaIndex: index,
cinemaId: cin.getAttribute('data-id'),
cinemaName: cin.getAttribute('data-name'),
cinemaURL: cin.getAttribute('data-url'),
};
}, {
s: 'NSW'
});
}, `div[data-state=${cinemaState}] div.top-select-option a.eccheckbox`, cinemaState);