在Javascript中访问数组内的对象返回TypeError:无法读取未定义错误的属性“数据”

我正在尝试使用 Google Apps Script 中的 javascript 访问对象数组中的对象,但它给了我一个错误 - TypeError:无法读取未定义的属性“0”

JSON(从 API 结果接收)如下,并存储在“data”变量中:

[{
    "values": {
        "article_number": [
            {
                "locale": null,"scope": null,"data": "000000000010137290"
            }
        ],"article_description": [
            {
                "locale": null,"data": "SDS Mini Desktop Organiser 3 Draw Sil"
            }
        ],"marketing_description": [
            {
                "locale": "en_US","data": "SDS Mini Desktop Organiser and 3 Drawers Mesh Silver"
            }
        ]
    }
}]

我正在尝试访问“数据”元素并将每个数据元素添加到一个新对象中:

var product = [];
  data.forEach(function(elem,i) {
    products.push(
     {
      article_number:elem["article_number"][0]["data"],article_description:elem["article_description"][0]["data"],marketing_description:elem["marketing_description"][0]["data"]
     });
  });

我非常感谢您帮助解决这个问题。我尝试删除 [0],但这只会返回错误“TypeError:无法读取未定义的属性‘数据’”。我不知所措,因为我认为调用数组的索引 0 会起作用。

yangbin1by 回答:在Javascript中访问数组内的对象返回TypeError:无法读取未定义错误的属性“数据”

这比您想要的要冗长一些,但这就是我所做的。

  1. 遍历对象的键。
  2. 找到匹配对象的 data 属性。
  3. key: data 格式创建一个包含对的新对象。

输出:

[
  {
    "article_number": "000000000010137290","article_description": "SDS Mini Desktop Organiser 3 Draw Sil","marketing_description": "SDS Mini Desktop Organiser and 3 Drawers Mesh Silver"
  }
]

完整代码如下:

let recieved = [{
  values: {
    article_number: [{
      locale: null,scope: null,data: "000000000010137290",},],article_description: [{
      locale: null,data: "SDS Mini Desktop Organiser 3 Draw Sil",marketing_description: [{
      locale: "en_US",data: "SDS Mini Desktop Organiser and 3 Drawers Mesh Silver",];

let allValues = [];

for (let i = 0; i < recieved.length; i++) {

  let newObj = Object.keys(recieved[i].values).reduce((acc,curr) => {
    acc[curr] = recieved[i].values[curr][0].data;
    return acc;
  },{});

  allValues.push(newObj);
}

console.log(allValues);

,

let data1 = [{
    "values": {
        "article_number": [
            {
                "locale": null,"scope": null,"data": "000000000010137290"
            }
        ],"article_description": [
            {
                "locale": null,"data": "SDS Mini Desktop Organiser 3 Draw Sil"
            }
        ],"marketing_description": [
            {
                "locale": "en_US","data": "SDS Mini Desktop Organiser and 3 Drawers Mesh Silver"
            }
        ]
    }
}]
var product = []; 
data1.forEach(function (elem,i) { 
product.push({ 
article_number: elem.values["article_number"][0]["data"],article_description: elem.values['article_description'][0].data,marketing_description: elem.values['marketing_description'][0].data });
}); 
console.log(product) 

let data1 = [{
    "values": {
        "article_number": [
            {
                "locale": null,"data": "SDS Mini Desktop Organiser and 3 Drawers Mesh Silver"
            }
        ]
    }
}]
var product = [];
data1.forEach(function (elem,i) {
    product.push({ article_number: elem.values.article_number[0].data,article_description: elem.values.article_description[0].data,marketing_description: elem.values.marketing_description[0].data });
});
console.log(product)

本文链接:https://www.f2er.com/10450.html

大家都在问