首页 > 解决方案 > 数组和对象操作

问题描述

所以我在练习一些 JS,这就是我在数组中遇到的嵌套对象。如何更改每个元素的年龄值。我想用数量、大小、product._id、product.variant._id我的原始数据更改将这些值保存在新对象中的结构

我希望的改变 我想要实现的改变到目前为止我能够做到这一点,但不是一成不变的

[
  {
    "quantity": 4,
    "size": "S",
    "product": {
      "_id": "607283d971fbe12de4e42ebe",
      "title": "LEVI Denim",
      "name": "TRUCKER JACKET",
      "category": "men",
      "price": 8999,
      "rating": 5,
      "sales": 69,
      "variant": {
        "img": [
          "https://lsco.scene7.com/is/image/lsco/levis/clothing/723340131-front-pdp.jpg?fmt=jpeg&qlt=70,1&op_sharpen=0&resMode=sharp2&op_usm=0.8,1,10,0&fit=crop,0&wid=1250&hei=1667",
          "https://lsco.scene7.com/is/image/lsco/levis/clothing/723340131-back-pdp.jpg?fmt=jpeg&qlt=70,1&op_sharpen=0&resMode=sharp2&op_usm=0.8,1,10,0&fit=crop,0&wid=1050&hei=1400",
          "https://lsco.scene7.com/is/image/lsco/levis/clothing/723340131-alt1-pdp.jpg?fmt=jpeg&qlt=70,1&op_sharpen=0&resMode=sharp2&op_usm=0.8,1,10,0&fit=crop,0&wid=1050&hei=1400"
        ],
        "_id": "607283d971fbe12de4e42ecb",
        "variantAvailability": true,
        "size": [
          {
            "_id": "607283d971fbe12de4e42ecc",
            "symbol": "S",
            "stock": 4
          },
          {
            "_id": "607283d971fbe12de4e42ecd",
            "symbol": "L",
            "stock": 13
          }
        ]
      },
      "__v": 0
    }
  }
]

标签: javascriptarraysobjectmultidimensional-arraynested

解决方案


您可以在 JavaScript 中使用 map() 方法,该方法通过对父数组中存在的每个元素调用特定函数来创建数组

const arr =  [
  {
    "quantity": 4,
    "size": "S",
    "product": {
      "_id": "607283d971fbe12de4e42ebe",
      "title": "LEVI Denim",
      "name": "TRUCKER JACKET",
      "category": "men",
      "price": 8999,
      "rating": 5,
      "sales": 69,
      "variant": {
        "img": [
          "https://lsco.scene7.com/is/image/lsco/levis/clothing/723340131-front-pdp.jpg?fmt=jpeg&qlt=70,1&op_sharpen=0&resMode=sharp2&op_usm=0.8,1,10,0&fit=crop,0&wid=1250&hei=1667",
          "https://lsco.scene7.com/is/image/lsco/levis/clothing/723340131-back-pdp.jpg?fmt=jpeg&qlt=70,1&op_sharpen=0&resMode=sharp2&op_usm=0.8,1,10,0&fit=crop,0&wid=1050&hei=1400",
          "https://lsco.scene7.com/is/image/lsco/levis/clothing/723340131-alt1-pdp.jpg?fmt=jpeg&qlt=70,1&op_sharpen=0&resMode=sharp2&op_usm=0.8,1,10,0&fit=crop,0&wid=1050&hei=1400"
        ],
        "_id": "607283d971fbe12de4e42ecb",
        "variantAvailability": true,
        "size": [
          {
            "_id": "607283d971fbe12de4e42ecc",
            "symbol": "S",
            "stock": 4
          },
          {
            "_id": "607283d971fbe12de4e42ecd",
            "symbol": "L",
            "stock": 13
          }
        ]
      },
      "__v": 0
    }
  }
]; 
let tempArr = arr.map(element=>{
    element['productId'] = element.product._id;
    element['variantId'] = element.product.variant._id;
    delete element['product'];
    return element;
  });

推荐阅读