【发布时间】:2018-06-21 12:29:10
【问题描述】:
我有一个数组“languageCodes”。我必须将对象“ssmlGender”和“languageCodes”分别与变量“genderSelected”和“languageSelected”进行比较。如果两者都是真的,我必须显示数组的相应“名称”字段。我确实尝试使用 forEach 进行两级过滤并将值存储在数组中。但是,只得到了一个空的。
let languageCodes = [
{ languageCodes: ['es-ES'], name: 'es-ES-Standard-A', ssmlGender: 'FEMALE', naturalSampleRateHertz: 2403},
{languageCodes: ['it-IT'], name: 'it-IT-Standard-A', ssmlGender: 'MALE', naturalSampleRateHertz: 21000},
{languageCodes: ['ja-JP'], name: 'ja-JP-Standard-A', ssmlGender: 'FEMALE', naturalSampleRateHertz: 3200},
{languageCodes: ['ko-KR'], name: 'ko-KR-Standard-A', ssmlGender: 'MALE', naturalSampleRateHertz: 2330},
{languageCodes: ['en-US'], name: 'en-US-Wavenet-B', ssmlGender: 'FEMALE', naturalSampleRateHertz: 412},
{languageCodes: ['en-GB'], name: 'en-GB-Standard-A', ssmlGender: 'MALE', naturalSampleRateHertz: 8493}
];
我的 JavaScript 函数:
function changeVoiceNameOption() {
const languageSelected = document.getElementById('languages').value;
let entriesElement = document.getElementById('entries');
entriesElement.innerHTML = '';
entriesElement.innerHTML += '<option value="" selected>Choose your option</option>'
var nameArray=[];
languageCodes.filter(( item ) => {
return item.ssmlGender.includes(genderSelected);
}).forEach(( filteredItems ) => {
filteredItems.languageCodes.forEach(( languageCode ) => {
return filteredItems.languageCodes.includes(languageSelected);
})
}).forEach(( filteredItems ) => {
entriesElement.innerHTML += `<option value="${item.name}"> ${item.name} </option>`
})
}
【问题讨论】:
标签: javascript arrays foreach javascript-objects