javascript - 如何在 JavaScript 中区分值和二维数组

标签 javascript multidimensional-array

我得到了一个由数据库填充的二维数组,如下所示:

var Index = [["value1_lang1", "value1_lang2", "value1_lang3", "3,6,11,"],["value1_lang1", "value1_lang2", "value1_lang3", "37,41,97,114,"],["value2_lang1", "value2_lang2", "value2_lang3", "9,14,33,"]];

该数组将获得超过 600 个值。我尝试使用以下两个 for 循环来完成此操作:

for(var i = 0; i < Index.length; i++) {
 for(var j = i + 1; j < Index.length; ) {
  var item1 = Index[i][0]; //Only have to compare the values from lang1
  var item2 = Index[j][0];

  if(item1 == item2) {
   var page1 = Index[i][3];
   var page2 = Index[j][3];

   if(page1 != page2) {
    var newpages = page1 + page2;
   } else {
    var newpages = page1;
   }

   Index[i][3] = newpages;
   Index.splice(j, 1);
   page1 = "";
   page2 = "";
   newpages = "";

  } else {
   j++;
  }
 }
}

结果应如下所示:

var Index = [["value1_lang1", "value1_lang2", "value1_lang3", "3,6,11,37,41,97,114"], ["value2_lang1", "value2_lang2", "value2_lang3", "9,14,33,"]];

但真正的结果是这样的:

var Index = [[undefined, undefined, undefined, undefined],["value1_lang1", "value1_lang2", "value1_lang3", "3,6,11,37,41,97,114,"], ["value2_lang1", "value2_lang2", "value2_lang3", "9,14,33,"]];

最佳答案

您可以使用内部数组的前三个元素作为哈希表的键,并推送到结果集(如果不存在)或将元素附加到索引 3 处。

var data = [["value1_lang1", "value1_lang2", "value1_lang3", "3,6,11,"], ["value1_lang1", "value1_lang2", "value1_lang3", "37,41,97,114,"], ["value2_lang1", "value2_lang2", "value2_lang3", "9,14,33,"]],
    result = [];

data.forEach(function (a) {
    var key = a.slice(0, 3).join('|');
    if (!this[key]) {
        this[key] = a.slice();
        result.push(this[key]);
        return;
    }
    this[key][3] += a[3];
}, Object.create(null));

console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

关于javascript - 如何在 JavaScript 中区分值和二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40675333/

相关文章:

C - 动态调整二维字符数组的大小

java - 将多维数组从 Mongodb 映射到 Java 应用程序

c - C中的多维字符串数组

javascript - 带有 ExtractTextPlugin 的 webpack-dev-server 不会生成 scss 文件的 css

javascript - 向函数添加属性并设置其原型(prototype)

javascript - 多个 $http.get 操作并将信息保存在一个 $scope 变量中

javascript - 预加载器在启动 HTML 站点之前加载所有 Assets

javascript - 序列化多对多查询问题

java - 复制二维数组并增加大小以填充新值

multidimensional-array - 如何输出多维数组切片