我有一个像[a,b,c,d]的数组,我想将它分成2个像[a,b]和[c,d]的数组,然后将其合并成具有[[a] ,b],[c,d]]。是否可以不使用for循环?
答案 0 :(得分:3)
您可以像这样使用slice
和push
方法
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']]