jquery多维数组 - 一个包含三个子数组的父数组

时间:2014-02-10 23:10:20

标签: javascript jquery arrays multidimensional-array

我的小提琴:http://jsfiddle.net/gVwPw/3/

我搜索并发现:

但是我不能做我正在尝试的事情。

我已在线建立订单输入页面,他们可以动态地向订单添加新行。每个新行应该是一个包含细节的数组,就像这样(我在这里使用PHP作为数组格式,因为我不知道正确的javascript格式)

Array
(
    [order_line_1] => Array
        (
            [sku] => afd433
            [uom] => CS
            [quantity] => 5
        )
)

我无法以这种方式存储它。我尝试了很多方法。帮助?!

2 个答案:

答案 0 :(得分:2)

JavaScript确实支持多维数组。有几种方法可以与数组进行交互。

您可以将其他数组推送到原始数组中,如下所示:

originalArray.push(newArray);

您可以像这样显式设置数组的索引:

originalArray[1] = newArray;

如果您使用对象作为PHP关联数组的模拟:

orders['orderLine1'] = newArray;

我个人会使用push,因为它会智能地将元素添加到数组中而不会破坏任何内容并保持“先进先出”顺序。

这样的事情:

// This array exists above in your scope
var orders = [];

// Whenever you are creating a new order line
var orderLine = [];
orderLine.push({
    sku: 'afd433',
    uom: 'CS',
    quantity: 5
});

// Whenever you are finished adding line-items to your order line
orders.push(orderLine1);

答案 1 :(得分:1)

在JavaScript中执行此操作的最简单方法是保留外部数组,但要使数组的每个元素都是标准JavaScript对象。语法如下所示:

var arr = [
    { "sku": afd433, // assuming that afd433 is a variable, not a string
      "uom": "CS", // assuming that CS is a string, not a variable
      "quantity": 5
    } // if you have more elements, add a , then a new object with the {} syntax
];

间距无关紧要;以下是等效的,更简洁:     var arr = [{“sku”:afd433,“uom”:“CS”,“quantity”:5}];

如果数组只包含一个元素,那么它们并不意味着什么,所以我会让它看起来像多个元素:

var arr = [
    {"sku": afd433, "uom": "CS", "quantity": 5},
    {"sku": afd334, "uom": "SC", "quantity": 7},
    {"sku": afd434, "uom": "SS", "quantity": 2}
];

请注意,var x = []是创建数组的简写,您可以通过列出元素对其进行初始化。最基本的例子是var digits = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]{}语法是创建JavaScript动态对象的简写,其中任何参数都可以使用上面的语法设置为任何值。