如何在JavaScript中拼接多个元素(不遵循连续顺序)?

湿婆萨希尔

我有两个数组,如下所示:

array1: [c,d,e]    
array2: [[a,b,c,d,e], [1,2,3,4,5], [6,7,8,9,10]]

我已经输入了[c,d,e]。

我要实现的是删除array2中所有对应的索引元素,如下所示,并仅保留具有与[a,b](在这种情况下为0和1)和[c,d,e]对应的索引的元素删除,即[3,4,5]。

因此结果输出应为:

array2: [[a,b], [1,2], [6,7]]

将array2视为一个表,其中第0个元素将始终是标题,并保留所有数据。在这里,array1不必具有连续的元素(如c,d和e),也可以是(c,a,e)。

我正在使用:

x.forEach(elem => {
l.forEach(index => {
elem.splice(l,1);
})
})

但是这种方法的问题在于,每次切出一个元素时,它们的相对位置都会发生变化,从而给出错误的结果。有更好,准确的方法吗?

Raina77ow

一种可能的方法:

function stripColumns(rowsWithHeader, columnsToStrip) {
  const header = rowsWithHeader[0];
  const indexesToStay = header.reduce((acc, col, i) => {
    if (!columnsToStrip.includes(col)) acc.push(i);
    return acc;
  }, []);
  return rowsWithHeader.map(row => indexesToStay.map(i => row[i]));
}

const inp = [['a','b','c','d','e'], [1,2,3,4,5], [6,7,8,9,10]];
const res = stripColumns(inp, ['c', 'd', 'e']);
console.log(res);

您可以对此进行一些优化,结合收集索引并填充结果数组的第一行(标题行):

function stripColumns(rowsWithHeader, columnsToStrip) {
  const result = [[]], indexesToStay = [];

  const header = rowsWithHeader[0];
  header.forEach((col, i) => {
    if (columnsToStrip.includes(col)) {
       return;
    }
    indexesToStay.push(i);
    result[0].push(col);
  });

  for (let i = 1, len = rowsWithHeader.length; i < len; i++) {
    result[i] = indexesToStay.map(j => rowsWithHeader[i][j]);
  }

  return result;
}
const inp = [['a','b','c','d','e'], [1,2,3,4,5], [6,7,8,9,10]];
const res = stripColumns(inp, ['c', 'e']);
console.log(res);

...但是我不太确定性能的微不足道值得增加复杂性。

请注意,对于这两种方法,原始数组均保持不变。该函数返回一个新值。如果那不是您想要的,是的,您需要以相反的顺序拼接元素。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Cardview在相对布局中不遵循z索引顺序

如何在NumPy数组中查找连续元素的组

如何在bash for循环中遍历多个不连续的范围

如何在不创建新元素的情况下更改列表中的n个连续元素?

如何在python中使用OpenCV拼接多个随机顺序的图像?

如何在不丢失对导航栏访问的情况下更改视图控制器中辅助功能元素的顺序?

如何在JavaScript中隐藏多个元素?

如何在角度7中从阵列拼接元素而又不干扰主阵列

如何在SMSS 17.9中选择不连续的行

如何在C ++中从向量中删除不连续的元素

如何在JavaSCript中从数组中打印多个元素?

如何在数组中查找连续的元素

如何在不增加行距的情况下将多个元素放入<li>元素中?

如何在列表中查找元素是连续的

如何在R中删除多个连续的特殊字符?

如何在字符串中查找不连续的字符?

如何在R中查找向量的两个或多个连续元素是否相等

如何在 vanilla javascript 中通过 DOM 创建多个元素?

使用 for 循环拼接数组中的多个元素

如何在VBA中迭代不连续范围?

如何在 Prolog 中获得成对的连续元素?

如何在JS中加入数组中连续的int元素

如何在 Javascript 中从数组中获取连续/顺序日期?

如何在 JavaScript 中按顺序验证多个变量?

如何在 Javascript 中的拼接数组中使用 .findIndex() 方法?

项目不遵循 HTML 中的顺序

如何在Javascript中鏈接兩個拼接方法?

如何在 JSX 中连续追加 HTML 元素?(反应)

如何在 <div> 中改变元素的顺序?