将json的每个对象的一组值推送到不同的数组中

push set of values for each object of json into different arrays

本文关键字:数组 一组 json 对象      更新时间:2023-09-26

目前我有以下代码,一个JSON文件,我用下划线将每个外观的产品ID推送到一个数组中,我想做的是将每个外观中的产品ID都推送到它们自己的数组中,这样我就有了productArray1productArray2productArray3等。我该如何调整?

JSON

looks = [{
        "id": "look1",
        "products": ["hbeu50271385", "hbeu50274296", "hbeu50272359", "hbeu50272802"]
    }, {
        "id": "look2",
        "products": [
            "hbeu50274106", "hbeu50273647", "hbeu50274754", "hbeu50274063", "hbeu50274911", "hbeu50274106", "hbeu50240022", "hbeu50271944"
        ]
    }, {
        "id": "look3",
        "products": [
            "hbeu50272935", "hbeu50274426", "hbeu50271624", "hbeu50274762", "hbeu50275366", "hbeu50274433", "hbeu50262002", "hbeu50272364", "hbeu50272359"
        ]
    }
    .......
]

JS(Undercore)

var productArray = []
_.each(looks, function(look) {
  _.each(look.products, function(product) {
    productArray.push(product.replace(/_.*/, ''))
  })
})

我可能有误解,但你只是在问如何创建数组吗?

var productArrays = [];
_.each(looks, function(look) {
  var productArray = [];
  _.each(look.products, function(product) {
    productArray.push(product.replace(/_.*/, ''))
  })
  productArrays.push(productArray);
});

例如:http://jsfiddle.net/bvaughn/acam2rzo/

此代码将产生一个2D阵列,如下所示:

[
  ["hbeu50271385"1: "hbeu50274296"2: "hbeu50272359"3: "hbeu50272802"],
  ["hbeu50274106"1: "hbeu50273647"2: "hbeu50274754"3: "hbeu50274063"4: "hbeu50274911"5: "hbeu50274106"6: "hbeu50240022"7: "hbeu50271944"length],
  ["hbeu50272935"1: "hbeu50274426"2: "hbeu50271624"3: "hbeu50274762"4: "hbeu50275366"5: "hbeu50274433"6: "hbeu50262002"7: "hbeu50272364"8: "hbeu50272359"]
];

让我们构建一个[name, products]对的列表,然后将该列表传递给_.object,以输出一个以productArrayn为键、以所需产品数组为值的对象:

var res = _.chain(looks).
    map(function(look) {
        return [
            "productArray" + look.id.substr(4),
            _.map(look.products, function(product) {
                return product.replace(/_.*/, '');
            })
        ];
    }).
    object().
    value();

将输出

productArray1: ["hbeu50271385", "hbeu50274296", ...],
productArray2: ["hbeu50274106", "hbeu50273647", ...],
productArray3: ["hbeu50272935", "hbeu50274426", ...],
....

还有一个演示http://jsfiddle.net/nikoshr/fkmtksz5/

类似的操作会起作用,productArrays将包含您的每个产品数组,使用它们的ID作为键,例如:productArrays.look1包含look1的所有产品。

var productArrays = {};
_.each(looks, function (look) {
  productArrays[look.id] = [];
  _.each(look.products, function (product) {
    productArrays[look.id].push(product.replace(/_.*/, ''));
  });
});