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

Oba*_*bay 1 javascript arrays

我正在使用Javascript.

我有

var myobj = {
              "one": {
                       "name" : "paul",
                       "no"   : "A123"
               },
              "two": {
                       "name" : "mike",
                       "no"   : "B456"
              },
              "three": {
                       "name" : "andy",
                       "no"   : "C789"
              },
};
Run Code Online (Sandbox Code Playgroud)

我有另一个newitem要插入的对象

var newIndex = "four";
var newItem = {
                "name" : "leo",
                "no"   : "D987"
              };
Run Code Online (Sandbox Code Playgroud)

我要如何插入newItemmyobjnewIndex的"索引"?

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

任何见解?

CMS*_*CMS 7

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

myobj[newIndex] = newItem;
Run Code Online (Sandbox Code Playgroud)

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

obj["1foo"] = "bar"; // `obj.1for` will cause a SyntaxError
obj["a b"] = "bar"; // `obj.a b` will cause a SyntaxError
Run Code Online (Sandbox Code Playgroud)

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

obj[someFunc()] = "foo";
Run Code Online (Sandbox Code Playgroud)

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

更多信息: