Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从JSON文件读取聚合JS_Javascript_Arrays_Json_Polymer - Fatal编程技术网

Javascript 从JSON文件读取聚合JS

Javascript 从JSON文件读取聚合JS,javascript,arrays,json,polymer,Javascript,Arrays,Json,Polymer,我试图从JS中Polymer中的JSON文件中读取一个子数组,并返回要在dom repeat中使用的子数组。但是,它告诉我子数组是未定义的。我尝试用各种方式重新构造JSON文件,但没有成功。我想我在某个地方没有使用正确的语法 现在,JSON如下所示: { "url": "dn8", "volpage": "DN iii 1", "languages": [{ "pt": { "authors"

我试图从JS中Polymer中的JSON文件中读取一个子数组,并返回要在
dom repeat
中使用的子数组。但是,它告诉我子数组是未定义的。我尝试用各种方式重新构造JSON文件,但没有成功。我想我在某个地方没有使用正确的语法

现在,JSON如下所示:

{
        "url": "dn8",
        "volpage": "DN iii 1",
        "languages": [{
            "pt": {
                "authors": ["Laera"],
                "titlelan": "Title in Portuguese"
            },
            "fr": {
                "authors": ["Moi"],
                "titlelan": "Title in French"
            },
            "es": {
                "authors": ["Jesus"]
            }
        }]
}
    Polymer({
      is: 'test-data',
      properties: {

        inputUrl: String,
        inputLanguage: String,
        inputData: {
              type: Array,
              notify: true,
              value: function(){return []}
        },

        languageData: {
          type: Array,
          computed: '_computeLanguage(inputData,inputLanguage)'
        }
      },
      _computeLanguage: function(inputData,inputLanguage) {
        var lanarray = inputData.languages[inputLanguage];
        return lanarray ? lanarray : "";
      }

    });
我试图得到一个名为
languageData
的子数组,它只保存输入语言的特定数据。输入具有
inputLanguage
的正确值,例如“pt”。我的JS看起来像这样:

{
        "url": "dn8",
        "volpage": "DN iii 1",
        "languages": [{
            "pt": {
                "authors": ["Laera"],
                "titlelan": "Title in Portuguese"
            },
            "fr": {
                "authors": ["Moi"],
                "titlelan": "Title in French"
            },
            "es": {
                "authors": ["Jesus"]
            }
        }]
}
    Polymer({
      is: 'test-data',
      properties: {

        inputUrl: String,
        inputLanguage: String,
        inputData: {
              type: Array,
              notify: true,
              value: function(){return []}
        },

        languageData: {
          type: Array,
          computed: '_computeLanguage(inputData,inputLanguage)'
        }
      },
      _computeLanguage: function(inputData,inputLanguage) {
        var lanarray = inputData.languages[inputLanguage];
        return lanarray ? lanarray : "";
      }

    });

非常感谢您的帮助

如您所见,JSON的
语言
属性不是
对象
,而是
数组

您的“聚合代码”运行良好,问题是您试图获取
languageData
,就好像它是一个数组:

var lanarray = inputData.languages[inputLanguage];
实际上,
languages
包含一个对象数组,您无法通过这种方式找到lang对象

一个可能的解决办法是:

var lanarray = inputData.languages[0][inputLanguage];

你能在网上设置这个问题的例子吗?这样会更容易帮助你解决问题吗?下面是操作方法:可以尝试:
var lanarray=inputData.0.languages[inputLanguage]谢谢你的解释。这真的很有帮助,我现在可以看出我错在哪里了。