从字符串数组

时间:2017-07-20 16:15:49

标签: javascript

为什么在尝试创建数组( 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);

5 个答案:

答案 0 :(得分:1)

您不能将变量用作对象属性名称。你可以试试;

&#13;
&#13;
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;
&#13;
&#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)

如果您想要一个对象作为结果,您可以使用以下内容:

&#13;
&#13;
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;
&#13;
&#13;

结果如下:

{
  "name": "John",
  "surname": "Smith",
  "dob": "04/03/1954"
}

答案 4 :(得分:0)

您可以使用ES6增强对象文字直接执行此操作:

arrayTextAreasNamesAndValues[i] = {
    [arrayTextAreasNames[i]]: "text"
};

或者,更好的是,

arrayTextAreasNamesAndValues = arrayTextAreasNames.map(name => {
    [name]: "text"
});