Вот тест мокко в моей программе Javascript:Как разобрать JSON строку в массив в Javascript
it('displays all available currencies in drop down list',() => {
return invoiceEditPage.details.currencyDropDown.dropDown.waitForEnabled()
.then(() => invoiceEditPage.details.currencyDropDown.click())
.then(() => getEnabledCurrencies(tenantUsers.admin.authUser))
.then((listOfCurrencies) => console.log(listOfCurrencies["name"].split(",")))
//.then((listOfCurrencies) => this.getCurrencyFromJSON(listOfCurrencies))
//.then(() => console.log(invoiceEditPage.details.currencyDropDown.dropDownContents))
//.then((listOfCurrencies) => assert.strictEqual(listOfCurrencies, invoiceEditPage.details.currencyDropDown.dropDownContents))
.then(() => invoiceEditPage.details.currencyDropDown.dropDownMask.click());
});
Если я просто использовать линию
.then((listOfCurrencies) => console.log(listOfCurrencies))
, то я могу видеть строку JSON является распечатаны, как-то вроде этого:
[ { displayText: 'USD$',
name: 'US Dollar',
symbol: 'USD$' },
т.д.
Я хотел бы получить строковое массив, содержащий имена всех объектов JSON, ie. ["US Dollar", "Canadian Dollar", "Australian Dollar"].
Однако, используя линию у меня выше, он утверждает:
"undefined: Cannot read property 'split' of undefined".
Если я пытаюсь JSON. parse(), я получаю Неожиданный токен o, поэтому я знаю, что «listOfCurrencies» уже является строкой. Что происходит?
Благодаря
'listOfCurrencies' является массивом, так что вы не можете сделать' listOfCurrencies [ «имя»] ' , Вы можете сделать 'listOfCurrencies [index] [" name "]'. Вам нужно выполнить итерацию по массиву или использовать функцию «map». – Kyriakos
Я считаю, что когда я пытался раньше, он жаловался, если я попытался индексировать в listOfCurrencies, потому что считал, что это не массив. –