使用变量作为对象的属性名称 - Javascript [重复]

2024-03-14

看到了一些与此相关的答案,但没有人回答该版本的相关主题。

考虑以下事项:(链接到:jsfiddle http://jsfiddle.net/8cUKR/2/)

$(function(){

arrKeys = [];
objArr = [];

nameArr = ['name1','name2','name3','name4'];
descArr = ['desc1','desc2','desc3','desc4'];
allValues = {name:  nameArr, desc: descArr};

arrKeys[0] = 'name';
arrKeys[1] = 'desc';

    first = arrKeys.shift(); // returns 'name'

    $(allValues[first]).each(function (key,value) { 

        console.log(first); //returns 'name'
        objArr[key] = {first:value}; //the problem

    });

    console.log(objArr);


});

使用 console.log(objArr) 生成以下对象数组,如下所示:

[物体,物体,物体,物体] 0:对象first:“姓名1” 1:对象first:“姓名2” 2:对象first:“姓名3” 3:对象first:“名字4” 长度:4

问题是我希望属性“first”成为 var first 的值(即“name”..因此,结果将是:

[对象,对象,对象,对象] 0:对象name: "name1" 1: 对象name: "name2" 2: 对象name: "name3" 3: 对象name:“name4”长度:4

(链接到:jsfiddle http://jsfiddle.net/8cUKR/2/)


要将变量设置为键名称,您必须使用括号表示法;

console.log(first); // returns 'name'
var obj = {};
obj[first] = value;
objArr[key] = obj; // no longer a problem

抱歉,这更冗长了:(

Edit;

在 ES6 中你现在可以使用计算属性名称 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Object_initializer#Computed_property_names;

const key = 'name';
const value = 'james';

const obj = {
  [key]: value
};
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用变量作为对象的属性名称 - Javascript [重复] 的相关文章

随机推荐