Group/merge 基于设定数字范围的数组值

Group/merge array values based on a set number range

这里是js新手

我有以下数组:

Array [
  Array [
    "Canadian",
    "57",
  ],
  Array [
    "",
    "Tire",
    "64",
  ],
  Array [
    "",
    "#",
    "67",
  ],
  Array [
    "",
    "168",
    "68",
  ],
  Array [
    "",
    "65",
    "84",
  ],
  Array [
    "",
    "Pinebush",
    "84",
  ],
  Array [
    "",
    "Road",
    "86",
  ],
  Array [
    "",
    ",",
    "87",
  ],
  Array [
    "",
    "Cambridge",
    "88",
  ],
  Array [
    "",
    "ON",
    "90",
  ],
  Array [
    "",
    "Bruno",
    "108",
  ],
  Array [
    "",
    "R",
    "109",
  ],
  Array [
    "",
    ",",
    "109",
  ],
  Array [
    "",
    "General",
    "109",
  ],
  Array [
    "",
    "Manager",
    "110",
  ],
]

我想把它变成下面的数组:

Array [
  Array [
    "Canadian Tire # 168",
    "57 64 67 68",
  ],
  Array [
    "65 Pinebush Road , Cambridge ON",
    "84 86 87 88 90",
  ],
  Array [
    "Bruno R , General Manager",
    "108 109 109 109 110",
  ],
]

嵌套数组中的值从字符串变为数字、标点符号和空格。 但是数组中的最后一个值是每个单词位置的 y 坐标,即:

"Canadian", <---word
"57", <----its y-coordinate


"",<--- empty string
"Tire",<---another word
"64",<---another y-coordiante

目标是根据词的 y 坐标落在小范围差异内对词进行分组:

57 64 67 68 都在11之内,

84 86 87 88 90 都在 6 或

之内

108 109 109 109 110 都在 2 之内。

如何在 vanilla js 中实现这一点?

感激不尽!

这个怎么样:

var originalArray=[["Canadian","57"],["","Tire","64"],["","#","67"],["","168","68"],["","65","84"],["","Pinebush","84"],["","Road","86"],["",",","87"],["","Cambridge","88"],["","ON","90"],["","Bruno","108"],["","R","109"],["",",","109"],["","General","109"],["","Manager","110"]];

var newArray=[];

for(var item of originalArray) {
  var age=Number(item[item.length-1]);
  var group=age<80?0:age<100?1:2;
  if(newArray[group]==undefined) newArray[group]=[[],[]];
  for(var j=0; j<item.length-1; j++) if(item[j]!="") newArray[group][0].push(item[j]);
  newArray[group][1].push(item[item.length-1]);
}

for(var item of newArray) {
  item[0]=item[0].join(" ");
  item[1]=item[1].join(" ");
}

for(var item of newArray) console.log(item);

假设最后 sub-item 是您要分组的年龄。
我按 80 岁以下手动分组,然后按 100 岁以下分组,然后 - 按其余分组。您可以修改它(您没有指定如何查找组...)。
它将值添加到 sub-arrays 中,然后加入到字符串中。