为对象属性赋值并按长度除

时间:2018-04-05 22:02:55

标签: javascript arrays object

有没有办法为对象的属性赋值?我有一个对象的订单列表。它们每个都有一个项目,这些项目具有状态。我想到达状态并分配一个数字1-3(接受,准备,发货)并除以项目数量的长度,以查看订单的完成程度。

obj orders包含各自包含状态的项目。

orders结构示例:

Array [0: Object { item: "shirt", status: "draft" }] Array [0: Object { item: "shirt, status: "failed" } 1: Object { item: "shirt" , status: "draft" }]

我尝试过的代码:

 for (var a = 0; a < list[i].orders.length; a++) {
     for (var b = 0; b < list[i].orders[b]['status']; b++);
         console.log(list[i].orders[b]['status']);           
 }

在这里,我设法在每个订单中控制每个项目的console.log。我不确定如何为该状态分配号码。

1 个答案:

答案 0 :(得分:1)

您只需设置与分配任何值的方式相同(使用=运算符):

&#13;
&#13;
var list = [
    {
        orders: [
            {
                item: "shirt",
                status: "draft"
            }
        ]
    },
    {
        orders: [
            {
                item: "shirt",
                status: "failed"
            },
            {
                item: "shirt",
                status: "draft"
            }
        ]
    }
];
list.forEach(function(item) {
    item.orders.forEach(function(order) {
        switch (order.status) {
            case "draft":
                order.value = 1;
                break;
            case "failed":
                order.value = 2;
                break;
            default:
                return;
        }
    });
});
console.log(JSON.stringify(list));
&#13;
&#13;
&#13;

我试图重新创建你的对象,让我知道结构是否有点偏离。

编辑: 既然您已经提供了数据结构的示例,我已经调整了代码。由于您根据不同的状态分配值,因此switch结构在这里是有意义的,因为没有状态优先于任何其他状态(而if / else if / else结构将暗示基于顺序的首选项)。< / p>