Rol*_*and 0 javascript for-loop
我有一系列域名: var domains = ["domain1", "domain2", "domain3"];
预期结果应为:
var domainData = {
type: 'combo',
name: 'domain',
width: 200,
offsetLeft: 30,
label: 'Test label',
required: true,
options: [
{text: 'domain1', value: 'domain1'},
{text: 'domain2', value: 'domain2'},
{text: 'domain3', value: 'domain3'},
]
};
Run Code Online (Sandbox Code Playgroud)
这是我试图做的,但它不起作用:
for(var i = 0; i < domains.length; i++) {
console.log(domains[i]);
var domainData = {
type: 'combo',
name: 'domain',
width: 200,
offsetLeft: 30,
label: 'Test label',
required: true,
options: [{
text: domains[i],
value: domains[i],
}]
};
}
Run Code Online (Sandbox Code Playgroud)
你可以在这里玩代码:https://jsbin.com/vadered/edit?js,console
问题是每次domainData使用for 循环时都要创建一个新对象.
您可以map通过传递回调提供的函数来使用方法,该函数应用于给定数组中的每个项目.
var domains = ["domain1", "domain2", "domain3"];
var domainData = {
type: 'combo',
name: 'domain',
width: 200,
offsetLeft: 30,
label: 'Test label',
required: true,
options: domains.map(elem=> ({text:elem, value:elem}))
};
console.log(domainData);Run Code Online (Sandbox Code Playgroud)
将domainData对象移到函数循环外部,然后添加以下值options:
var domainData = {
type: 'combo',
name: 'domain',
width: 200,
offsetLeft: 30,
label: 'Test label',
required: true,
options: []
};
for(var i = 0; i < domains.length; i++) {
domainData.options.push({ 'text':domains[i], 'value': domains[i] });
}
Run Code Online (Sandbox Code Playgroud)