我正在努力地思考如何在结构上实现这样的目标:

var keywordDataProducts =
      [
            {"keyword" : "keyword1", "list" : [ "DP1", "DP2" ] },
            {"keyword" : "keyword2", "list" : [ "DP1" ] }
      ];


但是,当然,无需对值进行硬编码。例如,我们当前循环浏览所有DP值(DP1,DP2,DP3等),这些值都具有0-M关键字。我正在尝试创建一个反向查询,在这里您可以获取使用特定关键字的所有DP。我的代码完美地使用了上面的结构,但是我只需要数据就可以更动态地填充。

我是否初始化var keywordDataProducts = [];声明中是否包含任何内容,或者定义包含关键字和列表(数组)的结构?还是将其保留为一无所有的数组,并在添加项目时进行定义?

我听说关联数组可以用于这种情况,但是目前我还不太清楚。我也见过使用{}用法的对象,但那里没有推送,我需要一个关键字数组,其中也包含DP数组(列表)。有什么想法吗?

最佳答案

您可能会执行类似的操作,但是并没有清楚地描述输入的外观和所需的输出。

function fn (input) {
  var ouput = {};
  input.forEach( function (DP) {
    for (prop in DP) {
      if (DP.hasOwnProperty(prop) {
        if (output[prop]) {
          output[prop].push(DP);
        } else {
          output[prop] = [DP];
        }
      }
    }
  });
  return output;
}


这需要这种输入

[{"alpha":...}, {"beta":..., "delta":...}, {"alpha":..., "gamma":...}]


并返回

{"alpha":[{"alpha":...}, {"alpha":..., "gamma":...}]}, "beta":{"beta":..., "delta":...}, "delta":{"beta":..., "delta":...}, "gamma":{"alpha":..., "gamma":...}}

关于javascript - Javascript键/值配对与阵列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41766354/

10-12 02:49