Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/460.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript对象-不使用eval添加属性?_Javascript - Fatal编程技术网

JavaScript对象-不使用eval添加属性?

JavaScript对象-不使用eval添加属性?,javascript,Javascript,我有一个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 ){

我有一个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?
    }
}
var get_params=new Object();
变量参数={'name':'john','age':'23'}//实际上直到运行时才知道

对于(var i=0,len=params.length;i您也可以通过
object['someKey']
访问对象。

由于您的代码示例的数组格式不正确,因此我将包括两种变体

变量1(参数是实际对象而不是数组):

变体2(param是包含对象的数组):


享受。

我肯定您键入的速度太快了,但是object的语法是{},而不是[]:)很难说您想要的是什么样的结果。牛头人对你想要的结果做了一个猜测,这似乎是合理的,但是,假设
params
是一个对象似乎更合理,然后结果与你开始时的结果完全相同!你真的应该详细说明你想要的答案。你所说的
p[1]
是什么意思
p
在你的代码中不存在……for循环让我觉得他真的想要一个数组,而不是一个对象。否则,他应该使用
for(参数中的变量i)
。这也不起作用。这里
p
是一个对象-例如
{'name':'john'}
-并且
p[0]
不存在。我很确定OP的意思是params是
{'name':'john','age':'23'}
,在这种情况下,您最初的解决方案更接近,但不正确。这只是我的猜测,但无论如何,这都不起作用。结果将是当前的
get_params={undefined:undefined}
@David:我认为最新的版本可以工作。没有更多的细节从OP,这是最好的,因为它得到了。是的!现在结果就是你所说的。如果这是OP想要的,恐怕我们只能猜测,所以是的,我同意目前这是最好的。@David,是的,是最好的。但我确实为hasOwnProperty添加了一张彻底性检查单。让我吃惊的是,所选答案包含依赖于对未定义元素的数组访问的代码。想想看……第一个解决方案基本上得到了与params相同的东西。关键是,为什么不使用params本身的值呢?第二个解决方案似乎工作正常,但当i=2时,实际上数组中有一个未定义元素的引用。这个解决方案依赖于javascript将您踢出for循环,因为您试图引用params[2],这是一个不存在的元素。正如我所说,这是可行的,但这不是我想要的方式。
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"
}
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];
    }
}
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];
        }
    }
}