jQuery:从对象数据创建数组

时间:2013-09-18 04:26:50

标签: javascript jquery arrays object

问题是键和值变量都被设置为对象。如何将这些转换为文本字符串?

units = [];

$('thead th[style*="width:130px;line-height:1.2em;text-align:center"]').each(function() {

    key  = $(this).contents('')[4];
    value = $(this).contents('')[6];

    units[key] = value;

});

JSBin of problem

3 个答案:

答案 0 :(得分:0)

究竟什么是关键值?你能用JSON方式吗?使用JSON.stringify() method转换JSON对象将更简洁,更容易。

var foo = {};
foo.bar = "new property";
foo.baz = 3;

var JSONfoo = JSON.stringify(foo);

有关详细信息,请参阅here

答案 1 :(得分:0)

如果我理解你的问题,下面就是你要找的。

jQuery .contents()会产生一个jQuery对象。因此,您应该只filter来自它的文本节点,然后获取其text。 (注意:我使用.trim()清除了任何额外的空格/换行符。

<强> jQuery的:

units = [];

$('thead th[style*="width:130px;line-height:1.2em;text-align:center"]').each(function () {
    key = $(this).contents().filter(function () {
        return this.nodeType === 3;
    }).eq(2).text().trim();
    value = $(this).contents().filter(function () {
        return this.nodeType === 3;
    }).eq(3).text().trim();
    units[key] = value;
});
//console.log(units);

控制台输出:

  

[pat(1“sq,1/3”high):“5g”,tbsp:“14.2g”,杯子:“227g”,棒:   “113克”]

Working Demo

注意:正如其他人已经在评论中指出的那样,我不建议在选择器中使用内联CSS。您可以将它们放入CSS类中,然后在选择器中使用类this

答案 2 :(得分:0)

我认为这可能有所帮助。

var units = [];

$('thead th[style*="width:130px;line-height:1.2em;text-align:center"]').each(function() {

    key  = $(this).text();
    console.log(key);
    value = $(this).contents('input[type=text]').val();
     console.log(value);
    units[key] = value;

});

for(var i in units){
  console.log(units[i]);
}