我有一个JavaScript对象,我想添加一些属性,但我不知道属性的名称是什么,直到运行时。
我可以不使用eval吗?如果是这样,怎么样?
var get_params = new Object();
var params = {'name':'john', 'age':'23'}; //actually not known until runtime
for (var i=0, len=params.length; i<len; ++i ){
get_params.p[0] = p[1]; //How can I set p[0] as the object property?
}
}
答案 0 :(得分:1)
您也可以通过object['someKey']
访问对象。
答案 1 :(得分:1)
由于您的代码示例格式错误,我将包含2个变体。
变体1(params是一个实际的对象,而不是一个数组):
var get_params = {}; // prefer literal over Object constructors.
var params = {'name':'john', 'age':'23'}; // @runtime (as object literal)
for (var key in params){
if(params.hasOwnProperty(key)) { // so we dont copy native props
get_params[key] = params[key];
}
}
变体2(param是一个包含对象的数组):
var get_params = {}; // prefer literal over Object constructors.
var params = [{'name':'john'},{'age':'23'}]; // @runtime (as array literal)
for(var i=0,param;param=params[i];i++) {
for (var key in param){
if(param.hasOwnProperty(key)) {
get_params[key] = param[key];
}
}
}
享受。
答案 2 :(得分:0)
var get_params = {};
var params = [{'name':'john'}, {'age':'23'}];
for (var i=0,len=params.length; i<len; ++i){
for (var p in params[i]) {
if(params[i].hasOwnProperty(p)) {
get_params[p] = params[i][p];
}
}
}
好的,那是我的第三个版本。我认为它会做我理解你的愿望。然而,有点复杂,你的动态数组可能有更好的格式。如果我理解你想要做的正确,这应该工作。基本上,它会创建以下对象:
get_params = {
name: "john",
age: "23"
}