jQuery创建二维数组

11

编辑:看来我有点混淆了自己的目标。感谢那些花时间解释的人。

我正在尝试在Jquery/Javascript中创建一个二维数组。我已经进行了相当多的搜索、测试和更多的搜索,但是我无法找到真正让我理解的解决方案。(这已经是一个非常漫长的一周了....)

下面是数组的期望格式。

{"product":[{"attribute":"value","attribute":"value"}]}

1
什么是问题?如果您有所需的格式,您在问什么?描述一下您想要的内容,这样我们就不需要使用心灵感应了。 - zzzzBov
你想要的是不可能的。对象的属性名称是唯一的。后者的“属性”将覆盖所有其他属性。 - Felix Kling
这对我来说看起来不像是一个二维数组。我看到的是一个具有嵌套值/值对的对象(这是不可能的)... - Doug Chamberlain
抱歉我没有清楚地表达我的问题。让我编辑一下。 - Stephen S.
5个回答

24

这不是一个二维数组,而是一个对象。另外,您的产品数组仅包含一个对象。我认为您需要像这样的东西:

var obj = {};
obj.product = [];
for(var i=0; i < someObj.length; i++) {
   obj.product.push[{"attribute": someObj[i]}]
}

这将在 product 属性中生成一个数组:

{"product":[{"attribute":"value"}, {"attribute":"value"}]}

我们可能应该将这个问题重命名为准确反映其主题的名称(因为它不是关于二维数组的),但我想不出一个好的问题名称。 - Anderson Green

17

在Javascript中,你不能创建二维数组,数组只能有一个维度。而是使用交错数组,即数组的数组,来代替二维数组。

例如:

var a = [
  [1, 2, 3],
  [4, 5, 6],
  [7, 8, 9]
];

您展示的所需格式既不是二维数组,也不是锯齿型数组,而是包含一个属性为对象数组的对象。但是,数组中的对象具有相同名称的两个属性,因此我认为,您是指带有两个对象的数组:

var o = {
  product: [
    { attribute: "value" },
    { attribute: "value" }
  ]
};
你可以使用类似上面的字面对象来创建一个对象,或者在之后添加属性和数组项来创建它:
var o = {};
o.product = [];
o.product.push({ attribute: "value" });
o.product.push({ attribute: "value" });

o.product.push({}) - LoveCoding

0

试试这个:

{"product":[ [{"attribute":"value"},{"attribute":"value"}]]} 

0

这是我的解决方案。

var optionArr = []
optionArr = {"product": [{"id":1, "name":"abc"}, {"name":"value"}]} 
var data = optionArr['product'][0]['name']
alert(data)

0
$(".adddiv").each(function(){

    tasks = [];
    $(".subtasktask"+len).each(function() {
        var raw = $(".subtasktask"+len).children().size();
        for(var l =0;l

        datas.push(milestone);
        alert("now show json milestone array : ");
        alert(milestone.month + ":" + milestone.title +":" + milestone.task. );
        len++
    });

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接