简体   繁体   中英

Passing function argument to retrieve data from an object

I am have some trouble with a script I am working on. I have been provided with an object with multiple items from a product catalog.

What I am trying to do is to write a function which to which will allow me to render this data easily.

<script type="application/javascript">
SKUinfo =
{
  "s238554": {
    "Age": {
      "Description": "Age 18+",
      "Thumbnail": "/productImages/assets/img/icon18.gif"
    },
    "Barcode": {
      "Barcode": "50622132430794"
    },
    "Currency": "£",
    "Description": "Description goes here",
    "Id": 44305,
     "Packshots": [
      "/productImages/238556/1min.jpg",
      "/productImages/238556/2med.jpg",
      "/productImages/238556/3max.jpg"
    ],
    "Pegis": [],
    "Platform": {
      "Button": "Xbox 360",
      "ID": 0
    },
    "Publisher": {
     "Description": null
    },
    "Release": "/Date(1392940800000+0000)/",
    "Screenshots": [
      {
        "ScreenshotMax": "/productImages/238556/5scrmax1.jpg",
        "ScreenshotMin": "/productImages/238556/4scrmin1.jpg"
      }
    ],
    "Title": "Product title 2 goes here",
    "Variants": [
      {
        "Id": 58242,
        "MaxOrderQuantity": 3,
        "Presellable": true,
        "Price": 29.97,
        "PriceCultureFormat": "29.97",
        "PriceWithCurrencyFormat": "£29.97",
        "Sku": 238556,
        "Type": {
          "Description": "New"
        }
      },
    ],
    "Vendor": {
      "Description": ""
    },
  },
  "s238556": {
    "Age": {
      "Description": "Age 18+",
      "Thumbnail": "/productImages/assets/img/pegi/icon18.gif"
    },
    "Barcode": {
      "Barcode": "5060134530794"
    },
    "Currency": "£",
    "Description": "Description here",
    "Id": 654654,
    "Packshots": [
      "/productImages/238556/1min.jpg",
      "/productImages/238556/2med.jpg",
      "/productImages/238556/3max.jpg"
    ],
    "Pegis": [],
    "Platform": {
      "Button": "PlayStation 3",
      "ID": 0
    },
    "Publisher": {
      "Description": null
     },
    "Release": "/Date(1392940800000+0000)/",
    "Screenshots": [
      {
        "ScreenshotMax": "/productImages/238556/5scrmax1.jpg",
        "ScreenshotMin": "/productImages/238556/4scrmin1.jpg"
      },
      {
        "ScreenshotMax": "/productImages/238556/7scrmax2.jpg",
        "ScreenshotMin": "/productImages/238556/6scrmin2.jpg"
      },
    ],
    "Title": "Product title 2 goes here",
    "Variants": [
      {
        "Id": 58242,
        "MaxOrderQuantity": 3,
        "Presellable": true,
        "Price": 29.97,
        "PriceCultureFormat": "29.97",
        "PriceWithCurrencyFormat": "£29.97",
        "Sku": 238556,
        "Type": {
          "Description": "New"
        }
      },
    ],
    "Vendor": {
      "Description": ""
    },
    "VideoHTML": "html here",
    "status": {
      "Response": "product found",
      "Success": true
    }
  }
}
</script>

The above example is the output I get for two products.

If I try to get access to this data this is where I have a problem

<script type="application/javascript">
function getSKU(s)
{
        console.log(SKUinfo.s.Title);
}

getSKU(s238554);


</script>

I imagine this is being caused when I am passing the argument s back to the function getSKU a the node selection in the data object. In this I would expect the console output to be the Title from SKU s238554.

What I get however, is: Uncaught ReferenceError: s238554 is not defined

I would appreciate any guidance that can be offered as I am a javascript novice.

Access your property by used [] on SKUinfo.s.Title like SKUinfo[s].Title

And also pass your property name within the quotes 's238554' as it's not variable.

Something like this.

function getSKU(s){
     console.log(SKUinfo[s].Title);
}

getSKU('s238554'); // s238554 within quotes.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM