반응형
어레이를 두 개의 어레이로 분할
var arr = ['a', 'b', 'c', 'd', 'e', 'f'];
var point = 'c';
"ar"를 "점" 변수에 따라 두 개의 배열로 분할하려면 다음과 같이 해야 합니다.
['a', 'b']
그리고.
['d', 'e', 'f']
var arr2 = ['a', 'b', 'c', 'd', 'e', 'f'];
arr = arr2.splice(0, arr2.indexOf('c'));
arr2에서 'c'를 제거하려면:
arr2.splice(0,1);
arr는 처음 두 요소를 포함하고 arr2는 마지막 세 요소를 포함합니다.
따라서 몇 가지 가정이 가능합니다. arr2는 처음 할당할 때 항상 '점'을 포함하므로 필요에 따라 경계 사례에 대한 정확도 검사를 추가합니다.
var arr = ['a', 'b', 'c', 'd', 'e', 'f'];
var indexToSplit = arr.indexOf('c');
var first = arr.slice(0, indexToSplit);
var second = arr.slice(indexToSplit + 1);
console.log({first, second});
이 페이지를 방문한 후 만든 이 편의 기능을 공유합니다.
function chunkArray(arr,n){
var chunkLength = Math.max(arr.length/n ,1);
var chunks = [];
for (var i = 0; i < n; i++) {
if(chunkLength*(i+1)<=arr.length)chunks.push(arr.slice(chunkLength*i, chunkLength*(i+1)));
}
return chunks;
}
샘플 사용량:
chunkArray([1,2,3,4,5,6],2);
//returns [[1,2,3],[4,5,6]]
chunkArray([1,2,3,4,5,6,7],2);
//returns [[1,2,3],[4,5,6,7]]
chunkArray([1,2,3,4,5,6],3);
//returns [[1,2],[3,4],[5,6]]
chunkArray([1,2,3,4,5,6,7,8],3);
//returns [[1,2],[3,4,5],[6,7,8]]
chunkArray([1,2,3,4,5,6,7,8],42);//over chunk
//returns [[1],[2],[3],[4],[5],[6],[7],[8]]
이것을 시도해 보십시오.
var arr = ['a', 'b', 'c', 'd', 'e', 'f'];
var point = 'c';
var idx = arr.indexOf(point);
arr.slice(0, idx) // ["a", "b"]
arr.slice(idx + 1) // ["d", "e", "f"]
var arr = ['a', 'b', 'c', 'd', 'e', 'f'];
var point = 'c';
Array.prototype.exists = function(search){
for (var i=0; i<this.length; i++) {
if (this[i] == search) return i;
}
return false;
}
if(i=arr.exists(point))
{
var neewArr=arr.splice(i);
neewArr.shift(0);
console.log(arr); // output: ["a", "b"]
console.log(neewArr); // output: ["d", "e", "f"]
}
여기 예가 있습니다.
var arr = ['a', 'b', 'c', 'd', 'e', 'f'];
var point = 'c';
var i = arr.indexOf(point);
var firstHalf, secondHalf, end, start;
if (i>0) {
firstHalf = arr.slice(0, i);
secondHalf = arr.slice(i + 1, arr.length);
}
//이를 통해 시작할 수 있습니다.수정하기 위해 테스트해야 할 엣지 케이스가 무엇인지 생각해 볼 수 있습니까? //포인트가 어레이의 시작 또는 끝에 있을 때 어떻게 됩니까?
배열을 분할할 때 arr1 및 arr2와 같이 분할할 내용을 포함하는 두 개의 새 배열을 생성해야 합니다.이 배열을 채우려면 다음과 같은 작업을 수행해야 합니다.
var arr1, arr2; // new arrays
int position = 0; // start position of second array
for(int i = 0; i <= arr.length(); i++){
if(arr[i] = point){ //when it finds the variable it stops adding to first array
//starts adding to second array
for(int j = i+1; j <= arr.length; j++){
arr2[position] = arr[j];
position++; //because we want to add from beginning of array i used this variable
}
break;
}
// add to first array
else{
arr1[i] = arr[i];
}
}
다양한 방법이 있습니다. 행운을 빌어요!
또 하나의 제안:
var segments = arr.join( '' ).split( point ).map(function( part ) {
return part.split( '' );
});
지금이다segments
에는 배열이 들어 있습니다.
[["a", "b"], ["d", "e", "f"]]
다음과 같이 접근할 수 있습니다.
segments[ 0 ]; // ["a", "b"]
segments[ 1 ]; // ["d", "e", "f"]
만약 당신이 똑같이 반으로 쪼개기를 원한다면; 루프를 하는 동안 왜 단순하지 않습니까?
var arr = ['a', 'b', 'c', 'd', 'e', 'f'];
var c=[];
while(arr.length > c.length){
c.push(arr.splice(arr.length-1)[0]);
}
카붐 :).
주어진 배열 요소를 문자열 배열 및 숫자 배열로 하여 두 개의 배열을 분리합니다.
let arr = [21,'hh',33,'kk',55,66,8898,'rtrt'];
arrStrNum = (arr) => {
let str = [],num = [];
for(let i = 0;i<arr.length;i++){
if(typeof arr[i] == "string"){
str.push(arr[i]);
}else if(typeof arr[i] == "number"){
num.push(arr[i]);
}
}
return [str, num]
}
let ans = arrStrNum(arr);
let str = ans[0];
let num = ans[1];
console.log(str);
console.log(num);
언급URL : https://stackoverflow.com/questions/9933662/split-array-into-two-arrays
반응형
'bestsource' 카테고리의 다른 글
Excel VBA를 사용하여 2D(PDF417 또는 QR) 바코드 생성 (0) | 2023.09.16 |
---|---|
WordPress - 작성자 페이지에서 주석 허용 (0) | 2023.09.16 |
잘못된 메모리를 가리킬 때의 (*ptr) 동작의 크기가 정의되지 않습니까? (0) | 2023.09.16 |
각도 5 쿼리 매개변수 제거 (0) | 2023.09.16 |
가깝고 멀고 거대한 포인터는 무엇입니까? (0) | 2023.09.16 |