为什么在尝试创建数组( arrayTextAreasNamesAndValues )时,使用另一个数组( arrayTextAreasNames)获取的字符串作为键的名称时,为什么会出现“语法错误:缺少:属性ID之后” )?
var arrayTextAreasNames = ["name","surname","dob"];
var arrayTextAreasNamesAndValues=[];
for (var i=0; i<arrayTextAreasNames.length; i++)
{
arrayTextAreasNamesAndValues[i] =
{
arrayTextAreasNames[i]: "text", //Syntax error: missing :after property id
};
}
console.log(arrayTextAreasNamesAndValues);
答案 0 :(得分:1)
您不能将变量用作对象属性名称。你可以试试;
var arrayTextAreasNames = ["name","surname","dob"];
var arrayTextAreasNamesAndValues=[];
for (var i=0; i<arrayTextAreasNames.length; i++)
{
temp_obj = {};
temp_obj[ arrayTextAreasNames[i] ] = "text";
arrayTextAreasNamesAndValues.push(temp_obj);
}
console.log(arrayTextAreasNamesAndValues);
&#13;
答案 1 :(得分:0)
您无法使用变量对name属性进行赋值。
MailCore.php
您需要将其更改为
arrayTextAreasNamesAndValues[i] =
{
arrayTextAreasNames[i]: "text", //Syntax error: missing :after property id
};
答案 2 :(得分:0)
您无法直接访问对象内的数组值。你必须使用括号。
var arrayTextAreasNames = ["name","surname","dob"];
var arrayTextAreasNamesAndValues=[];
for (var i=0; i<arrayTextAreasNames.length; i++)
{
arrayTextAreasNamesAndValues[i] = {};
arrayTextAreasNamesAndValues[arrayTextAreasNames[i]] = "text";
}
console.log(arrayTextAreasNamesAndValues);
答案 3 :(得分:0)
如果您想要一个对象作为结果,您可以使用以下内容:
var arrayTextAreasNames = ["name", "surname", "dob"];
var values = ['John', 'Smith', '04/03/1954'];
var arrayTextAreasNamesAndValues = {};
for (var i = 0; i < arrayTextAreasNames.length; i++) {
arrayTextAreasNamesAndValues[arrayTextAreasNames[i]] = values[i];
}
console.log(arrayTextAreasNamesAndValues);
&#13;
结果如下:
{
"name": "John",
"surname": "Smith",
"dob": "04/03/1954"
}
答案 4 :(得分:0)
您可以使用ES6增强对象文字直接执行此操作:
arrayTextAreasNamesAndValues[i] = {
[arrayTextAreasNames[i]]: "text"
};
或者,更好的是,
arrayTextAreasNamesAndValues = arrayTextAreasNames.map(name => {
[name]: "text"
});