2016-06-10 86 views
0

如果我有喜欢的对象:使用的参考对象属性

var myObj = { 'name,number,level': 'Mike,b1,0' }; 

如何我可以引用它的属性?

如何使用:

myObj.name 
myObj.number 
myObj.level 
+0

你只需要一键MyObj中[“的名称,数量,水平”] – maioman

+1

需要明确的是,你要转换'{ 'name,number,level':'Mike,b1,0'}'为'{'name':'Mike','number':'b1','level':'0'}'? –

+0

你的问题不清楚。你能解释一下吗?一个对象如何有争论?你是指属性? –

回答

2

您需要使用方括号:myObj['name,number,level']来获取值。如果你想在各个部分映射(你只能拥有这关键的),你可以这样做:

var newObj = {}, 
    values = myObj['name,number,level'].split(','); 

newObj.name = values[0]; 
newObj.number = values[1]; 
newObj.level = values[2]; 

更通用的方式来做到这将是:

function convertToIndividualKeys(obj) { 
    var key, keys, values, newObj = {}; 
    for(key in obj) { 
    if(obj.hasOwnProperty(key)) { 
     keys = key.split(','); 
     values = obj[key].split(','); 
     for (var i = 0; i < keys.length && i < values.length; i++) { 
     newObj[keys[i]] = values[i]; 
     } 
    } 
    } 

    return newObj; 
} 

var myObj = { 'name,number,level': 'Mike,b1,0' }; 
myObj = convertToIndividualKeys(myObj); 

// Now you can access it the way you would like 
myObj.name // gives "Mike" 

注:

通过这些转换,这些值将全部为字符串。您示例中的0实际上将为'0',因此您可能需要手动将其转换为整数,具体取决于您如何使用它。

这将覆盖其它的值,如果你有多个按键,即myObj = { 'name,number': 'A,1', 'name2,number': 'B,2' };可能会变成{ name: 'A', name2: 'B', number: 2 }

+0

:我打开了一个新帖子,如果你有兴趣[这里](http://stackoverflow.com/questions/37747912/use-a-reference-to-many-entries-object-properties) – George

1

您可以分割初始密钥找出一个键,然后用它们来创建新的对象,你想要的方式。这里是示例代码。

var myObj = { 
 
    'name,number,level': 'Mike,b1,0' 
 
}; 
 
for (var i in myObj) { 
 
    var keys = i; 
 
    var value = myObj[i]; 
 
    keysArray = keys.split(","); 
 
    valArray = value.split(","); 
 

 
    var newObj = {}; 
 
    for (i = 0; i < keysArray.length; i++) { 
 

 
    newObj[keysArray[i]] = valArray[i]; 
 

 
    } 
 

 
    alert(newObj.name); 
 
    alert(newObj.number); 
 
    alert(newObj.level); 
 
}

+0

只需要指出,只有在对象中只有一个键的情况下,此解决方案才有效。只有对象中的最后一个键/值对才会被处理。 – rdubya