我正在使用dojo lang.mixin将项目写入对象,但似乎只写了最后一个键:对象的值。这让我觉得lang.mixin只写了一个键:一次是值。有没有办法继续将key:值附加到对象?
for (var i = 0; i < selection.length; ++i) {
lang.mixin(myObj, {
selection[i].Type: selection[i].Name //always gives me last index in loop
})
}
答案 0 :(得分:0)
向对象添加属性时,属性必须是唯一的。
lang.mixin
用于使用源对象更新目标对象。如果属性“name”与源匹配,则更新属性,否则将属性添加到目标。嵌套对象不会混合。例如:
var a = {
name:"John",
account : { type : "student", email : "a@xyz.com" }
};
var b = {
Age: "18 yrs",
account: { phone : "66589956" }
};
lang.mixin(a, b); // here the type and email will be lost for account property
在您的情况下,如果您认为selection[i].Type
是“类型”,那么您的代码将表现如下
for (var i = 0; i < selection.length; ++i) {
lang.mixin(myObj, {
"type" : selection[i].Name
});
}
因此,除非selection[i].Type
值不同,否则将在循环的每个循环中更新相同的属性。
require(["dojo/_base/lang"], function(lang){
var selection = [ { Type:"A", Name:"Letter A" },
{ Type:"B", Name:"Letter B" },
{ Type:"C", Name:"Letter C" },
{ Type:"D", Name:"Letter D" }
];
var myObj = {};
for (var i = 0; i < selection.length; ++i) {
var tmp = {};
tmp[selection[i].Type] = selection[i].Name;
lang.mixin(myObj, tmp);
}
console.log(myObj);
});
<script src="//ajax.googleapis.com/ajax/libs/dojo/1.11.2/dojo/dojo.js"></script>