javascript – 如何根据另一个数组中的元素拆分数组

前端之家收集整理的这篇文章主要介绍了javascript – 如何根据另一个数组中的元素拆分数组前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有两个数组:array1和array2.因此,array1将根据内部元素array2进行拆分.例如:
array1["1","2","3","4","5","6"]
array2["2","5"]

我的代码

var prev = 0;
newArray = []; 
for (var ii in array2) {
    var index = array1.indexOf(array2[ii]);

    if (index != prev) {
        newArray.push(array1.slice(prev,index));
        prev = index;
    }
 }
 newArray.push(array1.slice(prev));

结果将是:

["1"],["2","4"],["5","6"]

但是现在我面临的问题是array1的元素可能没有按顺序排列.例如:[“1”,“5”,“3”,“4”,“2”,“6”].所以基于我的代码,它将错误地拆分array1,因为array2中的第一个元素是“2”,所以它已经将array1分成两个[“1”,“4”],[ “2”,“6”].接下来当“5”时,它找不到它.

预期的结果是:[“1”],[“5”,[“2”,“6”]

那么如何基于array2拆分array1,无论array1是按升序,降序还是随机顺序.对不起,我的英语不好.希望你们能理解.

解决方法

试试这个.它遍历array1并将每个项目推送到临时数组中.当在array2中找到该项时,临时数组将被推入最终数组,然后重置.
var array1 = ["1","6"];
var array2 = ["2","5"];

var newArray = [];
var currArray = [];

for (let i = 0; i < array1.length; i++) {

  // Item exists in array2. Add to newArray and reset currArray
  if (i > 0 && array2.includes(array1[i])) {
    newArray.push(currArray);
    currArray = [];
  }

  currArray.push(array1[i]);
}

newArray.push(currArray); // Add final currArray to newArray

console.log(newArray); // print result

另外,如果索引顺序很重要(如在您的情况下),最好不要使用for..in迭代数组,因为它不会以任何特定顺序返回索引.更多信息here.

猜你在找的JavaScript相关文章