访问键/值对中的键Javascript

时间:2014-12-01 05:48:36

标签: javascript

如何在javascript中访问键值对的键值?

函数ruleList是否要创建一个数组,该数组存储ruleResults中每个localizedRuleNames的字符串值?我可以创建一个包含localizedRuleNames的数组。

但是如何获取与localizedRuleNames相关联的字符串值?

// Iterate through the localizedRuleNames in ruleResults and 
// return an array of their strings.
function ruleList(results) {
    // Your code goes here!
    ruleArray = [];
    for (var i in psinsights.formattedResults.ruleResults){
        //console.log(i);
        for (var j in psinsights.formattedResults.ruleResults[i]){
            // console.log(j);
             ruleArray.push(j);
        }
    }
    console.log(ruleArray);
    return ruleArray;
}

// Iterate through pageStats in the ps`    iResults object and 
// return the total number of bytes to load the website.
function totalBytes(results) {
    // Your code goes here!
}

// Below, you'll find a sample PS Insights JSON
// and two console.log statements to help you test your code!

psinsights = {
 "kind": "pagespeedonline#result",
 "id": "/speed/pagespeed",
 "responseCode": 200,
 "title": "PageSpeed Home",
 "score": 90,
 "pageStats": {
  "numberResources": 22,
  "numberHosts": 7,
  "totalRequestBytes": "2761",
  "numberStaticResources": 16,
  "htmlResponseBytes": "91981",
  "cssResponseBytes": "37728",
  "imageResponseBytes": "13909",
  "javascriptResponseBytes": "247214",
  "otherResponseBytes": "8804",
  "numberJsResources": 6,
  "numberCssResources": 2
 },
 "formattedResults": {
  "locale": "en_US",
  "ruleResults": {
    "AvoidBadRequests": {
      "localizedRuleName": "Avoid bad requests",
      "ruleImpact": 0.0
    },
    "MinifyJavaScript": {
      "localizedRuleName": "Minify JavaScript",
      "ruleImpact": 0.1417,
      "urlBlocks": [
      {
        "header": {
       "format": "Minifying the following JavaScript resources could reduce their size by $1 ($2% reduction).",
       "args": [
        {
         "type": "BYTES",
         "value": "1.3KiB"
        },
        {
         "type": "INT_LITERAL",
         "value": "0"
        }
       ]
        },
        "urls": [
        {
          "result": {
         "format": "Minifying $1 could save $2 ($3% reduction).",
         "args": [
          {
           "type": "URL",
           "value": "http://code.google.com/js/codesite_tail.pack.04102009.js"
          },
          {
           "type": "BYTES",
           "value": "717B"
          },
          {
           "type": "INT_LITERAL",
           "value": "1"
          }
         ]
        }
       },
       {
        "result": {
         "format": "Minifying $1 could save $2 ($3% reduction).",
         "args": [
          {
           "type": "URL",
           "value": "http://www.gmodules.com/ig/proxy?url\u003dhttp%3A%2F%2Fjqueryjs.googlecode.com%2Ffiles%2Fjquery-1.2.6.min.js"
          },
          {
           "type": "BYTES",
           "value": "258B"
          },
          {
           "type": "INT_LITERAL",
           "value": "0"
          }
         ]
        }
       }
      ]
     }
    ]
   },
   "SpriteImages": {
    "localizedRuleName": "Combine images into CSS sprites",
    "ruleImpact": 0.0
   }
  }
 },
 "version": {
  "major": 1,
  "minor": 11
 }
};

// Try logging the outputs below to test your code!
console.log(ruleList(psinsights));
console.log(totalBytes(psinsights));

2 个答案:

答案 0 :(得分:0)

变化:

ruleArray.push(j);

要:

ruleArray.push(psinsights.formattedResults.ruleResults[i][j]);

答案 1 :(得分:0)

我认为此更新可以做到。希望它有效。

function ruleList(results) {
ruletArray = [];

for(ruleResult in results.formattedResults.ruleResults){
    ruleResultArray.push(results.formattedResults.ruleResults[ruleResult].localizedRuleName);
}

return ruleResultArray;
}