我正在尝试创建一个对象/数组键,然后为该新键定义一个子对象。
var myObject = {};
var newKey = function(key, value, otherval) {
myObject[key] = value;
myObject[key].subval = otherval;
};
newKey('google', 'wiki', 'yahoo');
它会创建myObject.google
罚款,并为其提供值'wiki',但它根本不会创建myObject.google.subval
。如何使用ONE功能执行此操作?
答案 0 :(得分:1)
myObject.google已经等于“wiki”,这是一个字符串。
您可以执行类似(jsfiddle updated)的操作:
var myObject = {};
var newKey = function(key, value, otherval) {
myObject[key] = {'value':value, 'subval':otherval}
};
newKey('google', 'wiki', 'yahoo');
console.log(myObject);
答案 1 :(得分:0)
如果要为其分配子项,则myObject.key
不能是字符串。它必须是一个对象。所以你会写:
var myObject = {};
var newKey = function(key, value, subval, otherval) {
myObject[key] = {'value' : value};
myObject[key][subval] = {'value': otherval}; //or myObject[key][subval] = otherval; if your subval wouldn't be having any sub-subvals later on
};
newKey('googleKey', 'google', 'yahooKey', 'yahoo');
答案 2 :(得分:0)
首先,你问的要求是错误的结构,这就是你所要求的。
您的结构将从已发布的功能
中进行转换 var myObject = {
google: 'wiki'
};
console.log(myObject.google) OUTPUTS wiki
你在问什么:
var myObject = {
google : {
subval : 'yahoo'
}
};
现在 console.log(myObject.google.subval) OUTPUTS yahoo
为什么你的Q /结构错了?
你在问什么, 分配
google:wiki
并分配
google:{
subval:'yahoo'
<强>} 强>
从上述两个方面来看,你应该将谷歌分配给维基或谷歌转到子对象 你的要求要求两者都与基本逻辑相矛盾,因而不可能。