var arr = ['a', 'b', 'c', 'd', 'e', 'f'];
var point = 'c';
如何根据“point”变量将“arr”拆分为两个数组,例如:
['a', 'b']
和
['d', 'e', 'f']
var arr = ['a', 'b', 'c', 'd', 'e', 'f'];
var point = 'c';
如何根据“point”变量将“arr”拆分为两个数组,例如:
['a', 'b']
和
['d', 'e', 'f']
var arr2 = ['a', 'b', 'c', 'd', 'e', 'f'];
arr = arr2.splice(0, arr2.indexOf('c'));
从arr2中移除“c”:要从arr2中移除'c':
```arr2.splice(0,1);
arr包含前两个元素,arr2包含后三个元素。
这做了一些假设(比如arr2始终包含在第一次赋值中的'point'),因此需要根据需要添加一些边界情况的正确性检查。
arr2.indexOf('c') + 1
。 - Jon在访问了这个页面后,我制作了这个便利函数,现在分享给大家。
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
不是正确的选择,现代JS代码应该使用let
,并且您可以使用转译器来支持旧版浏览器。此外,那个if
语句中根本没有空格。 - Corman试试这个:
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"]
}
Here is an example.
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);
}
//这应该可以让你开始了。你能想到哪些边缘情况需要测试以进行修复吗? //当点在数组的开头或结尾时会发生什么?
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];
}
}
有不同的方法可以做到这一点!祝你好运!
如果你想要将其分成相等的两半,为什么不使用简单的 while 循环呢?
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);
另一个建议:
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"]
indexOf
然后跟着slice
。 - zzzzBov