使用jQuery将{Key:Value} Object转换为标准变量

时间:2010-08-01 14:36:30

标签: php javascript jquery arrays object

我在PHP中给你我想要的东西:

foreach($myarray as $key=>$value) { ${$key} = $value; }

现在,我们可以用JS / jQuery做到吗?

这是jQuery输入,我想将classTD值作为键,换句话说,相当于上面示例中着名的PHP语句$ {$ key}:

data  = {};
$('#resul_rech_doc_fact tr.document-2 td').each(function(index) {
var classTD = $(this).attr('class');
var contentTD = $(this).text();
data = $.extend(data , { classTD : contentTD });
});

5 个答案:

答案 0 :(得分:3)

如果你想在Javascript中将PHP数组转换为对象 - 你可以使用函数:

http://php.net/manual/en/function.json-encode.php

手册示例:

// PHP
$arr = array ('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5);
$js = json_encode($arr);
echo $js;

// output
{"a":1,"b":2,"c":3,"d":4,"e":5} 

因此,您可以使用PHP“回显”$js变量来初始化您的javascript。

对于JS对象的属性的迭代,您可以使用:

http://www.w3schools.com/js/js_loop_for_in.asp

示例:

for (key in objectInstance)
{
  alert(objectInstance[key]); // value
}

答案 1 :(得分:3)

该行:

data = $.extend(data , { classTD : contentTD });

不按预期行事。它与:

相同
data = $.extend(data , { 'classTD' : contentTD });

您似乎想要评估classTD并将其作为对象的密钥起诉。您有两种选择:

您可以指定data成员,修改data

data[classTD] = contentTD;

或者您可以将$.extend与临时对象一起使用:

var obj = { };
obj[classTD] = contentTD;
data = $.extend(data, obj);

答案 2 :(得分:1)

我认为你想要的是:

data  = {};
$('#resul_rech_doc_fact tr.document-2 td').each(function(index) {
  data[$(this).attr('class')] = $(this).text();
});

如果要创建全局变量,可以在window对象上设置poperties(但我不推荐它):

$('#resul_rech_doc_fact tr.document-2 td').each(function(index) {
  window[$(this).attr('class')] = $(this).text();
});

然后,如果您有一个名为'foo'的类,您可以将'foo'作为“全局变量”访问。这里的危险是你可以很容易地覆盖窗口对象的重要属性。

答案 3 :(得分:0)

好吧,您可以使用with,但with is considered harmful

var obj = { bar: 'foo' };

with (obj) {
    alert(bar); // 'foo'
}

alert(bar); // undefined

如果你必须有循环,你可以这样做:

var obj = { bar: 'foo' };
var key, value;

with (obj) {
    for (key in obj) {
        if (!obj.hasOwnProperty(key)) {  // Never forget this check!
            continue;
        }

        value = obj[key];

        // Rest of loop here.
    }
}

答案 4 :(得分:0)

对于所有Web用途,global scope = window,所以:

window['foobar'] = 'bar';
alert(foobar);

因此(不可推荐):

var json = {'foobar':'bar'};
for i in json {
    window[i] = json[i];
}
alert(foobar);