使用字符串变量的值作为Javascript中现有对象的“索引”

时间:2010-07-20 07:05:02

标签: javascript arrays

我正在使用Javascript。

我有

var myobj = {
              "one": {
                       "name" : "paul",
                       "no"   : "A123"
               },
              "two": {
                       "name" : "mike",
                       "no"   : "B456"
              },
              "three": {
                       "name" : "andy",
                       "no"   : "C789"
              },
};

我想要插入另一个对象newitem

var newIndex = "four";
var newItem = {
                "name" : "leo",
                "no"   : "D987"
              };

如何使用newItem作为'索引'将myobj插入newIndex

顺便说一句,newIndex不是由我生成的,所以我不能说myobj.four = newItem; myobj.newIndex = newItem不起作用,因为它使用'newIndex'这个词作为索引而不是它值。

任何见解?

1 个答案:

答案 0 :(得分:7)

使用括号表示法属性访问器:

myobj[newIndex] = newItem;

当您想要定义名称不是有效标识符的属性时,它也很有用,例如:

obj["1foo"] = "bar"; // `obj.1for` will cause a SyntaxError
obj["a b"] = "bar"; // `obj.a b` will cause a SyntaxError

请注意,您甚至可以使用具有此属性访问器的表达式,例如:

obj[someFunc()] = "foo";

它将评估括号之间的表达式,并将结果转换为字符串,因为JavaScript没有 true 哈希表,属性名称必须是String类型。

更多信息: