JavaScript按条件拆分和合并数组

时间:2019-06-20 09:24:57

标签: javascript arrays loops

我有一个像[a,b,c,d]的数组,我想将它分成2个像[a,b]和[c,d]的数组,然后将其合并成具有[[a] ,b],[c,d]]。是否可以不使用for循环?

5 个答案:

答案 0 :(得分:3)

您可以像这样使用slicepush方法

var arr = ['a', 'b', 'c', 'd'];
let index = 2;
let result = [];
result.push(arr.slice(0, index));
result.push(arr.slice(index))
console.log(result);

答案 1 :(得分:0)

是的,没有循环,您可以执行此操作,但是您应该知道必须在哪个索引处拆分数组。

var arr = ['a', 'b', 'c', 'd'];  
var indexToSplit = arr.indexOf('c');
var first = arr.slice(0, indexToSplit);
var second = arr.slice(indexToSplit + 1);
var final = [first, second]
    console.log(final);

答案 2 :(得分:0)

let arr = [0, 1, 9, 10, 8];
    let arr2 = arr.slice(1,3);
    let resultArr = [];

    if(arr2[1] > 1){
    resultArr.push(99); 
    }
else{
    resultArr.push(100); 

}
    console.log(resultArr)

答案 3 :(得分:0)

您可能会喜欢这样的东西:

with tab1 as(
  select 'abc@test.com;xyz@test;com;pqr@test;com' as email from dual
)
,
tab2 as(
  select 'cba@test.com;zyx@test;com;pqr@test;com' as email from dual
)
,tab3 as(
  select 'abc@test.com;xyz@test;com;pqr@test;com;klm@test.com' as email from dual
)

select listagg(str,';')  WITHIN GROUP (ORDER BY str) "emails"
from (
  SELECT distinct trim(regexp_substr(email, '[^;]+', 1, LEVEL)) str
  from(
    select email
    from tab1
    union all
    select email
    from tab2
    union all
    select email
    from tab3
  )CONNECT BY instr(email, ';', 1, LEVEL - 1) > 0
)

在功能块中,还有空间可以额外处理阵列项。使用所需的所有条件,例如过滤或对某些类型进行特殊处理。

答案 4 :(得分:0)

我找到了解决该问题的另一种方法,没有编写循环 Lodash Chunk做到了这一逻辑

_.chunk(['a', 'b', 'c', 'd'], 2);
// => [['a', 'b'], ['c', 'd']]

https://lodash.com/docs/