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

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

我的代码

  1. var prev = 0;
  2. newArray = [];
  3. for (var ii in array2) {
  4. var index = array1.indexOf(array2[ii]);
  5.  
  6. if (index != prev) {
  7. newArray.push(array1.slice(prev,index));
  8. prev = index;
  9. }
  10. }
  11. newArray.push(array1.slice(prev));

结果将是:

  1. ["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中找到该项时,临时数组将被推入最终数组,然后重置.
  1. var array1 = ["1","6"];
  2. var array2 = ["2","5"];
  3.  
  4. var newArray = [];
  5. var currArray = [];
  6.  
  7. for (let i = 0; i < array1.length; i++) {
  8.  
  9. // Item exists in array2. Add to newArray and reset currArray
  10. if (i > 0 && array2.includes(array1[i])) {
  11. newArray.push(currArray);
  12. currArray = [];
  13. }
  14.  
  15. currArray.push(array1[i]);
  16. }
  17.  
  18. newArray.push(currArray); // Add final currArray to newArray
  19.  
  20. console.log(newArray); // print result

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

猜你在找的JavaScript相关文章