js实现数组分组
有这样一个数组:
[‘法国’,’澳大利亚’,’智利’,’新西兰’,’西班牙’,’加拿大’,’阿根廷’,’美国’,’0’,’国产’,’波多黎各’,’英国’,’比利时’,’德国’,’意大利’,’意大利’,]
现在希望让每3个分成一个数组,像这样:
[[‘法国’,’澳大利亚’,’智利’],[‘新西兰’,’西班牙’,’加拿大’],[‘阿根廷’,’美国’,’0’],[‘国产’,’波多黎各’,’英国’],[‘比利时’,’德国’,’意大利’],[‘意大利’],]
实现办法
第一种办法:
var data = ["法国","澳大利亚","智利","新西兰","西班牙","加拿大","阿根廷","美国","0","国产","波多黎各","英国","比利时","德国","意大利","意大利",];
var result = [];
for(var i=0,len=data.length;i<len;i+=3){
result.push(data.slice(i,i+3));
}
第二种办法:
var countries= ["法国","澳大利亚","智利","新西兰","西班牙","加拿大","阿根廷","美国","0","国产","波多黎各","英国","比利时","德国","意大利","意大利"];
var chunkCountries = _.chunk(countries,3);
使用lodash的chunk方法,如果不想使用整个类库,可以单独引入这个方法
import chunk from "lodash/chunk";
var chunk =require("lodash/chunk");
如果你只想用引入的chunk,用这个:https://github.com/ryancole/chunk/blob/master/src/chunk.js
第三种办法:
var arr = ["法国","澳大利亚","智利","新西兰","西班牙","加拿大","阿根廷","美国","0","国产","波多黎各","英国","比利时","德国","意大利","意大利"],
newArr = [],
b;
arr.forEach(function(item, index, array) {
var a = Math.floor(index / 3);
if (b !== a) {
b = a;
newArr[a] = new Array();
}
newArr[a].push(item);
});
第四种办法:
function group(array, subGroupLength) {
var index = 0;
var newArray = [];
while(index < array.length) {
newArray.push(array.slice(index, index += subGroupLength));
}
return newArray;
}
var countries = ["法国","澳大利亚","智利","新西兰","西班牙","加拿大","阿根廷","美国","0","国产","波多黎各","英国","比利时","德国","意大利","意大利",];
var groupedCountries = group(countries, 3);
第五种办法:
var a = ["法国","澳大利亚","智利","新西兰","西班牙","加拿大","阿根廷","美国","0","国产","波多黎各","英国","比利时","德国","意大利","意大利"];
var b = [];
var result = [];
var k = 0;
for(var i = 0; i<a.length; ++i){
if(i%3 == 0){
b = [];
for(var j = 0; j<3; ++j){
if(a[i+j] == undefined){
continue;
} else{
b[j] = a[i+j];
}
}
result[k] = b;
k++;
}
}
console.log(result);
第六种办法:
var chunk = function(arr, num){
num = num*1 || 1;
var ret = [];
arr.forEach(function(item, i){
if(i % num === 0){
ret.push([]);
}
ret[ret.length - 1].push(item);
});
console.log(ret);
return ret;
};
// run
var source = ["法国","澳大利亚","智利","新西兰","西班牙","加拿大","阿根廷","美国","0","国产","波多黎各","英国","比利时","德国","意大利","意大利"];
chunk(source, 3);
第七种办法:
var arr = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j"];
function formatArray(arr) {
var begin = 0,
end = begin + 3;
var result = [],
arrLength = arr.length;
if (end >= arrLength) return result.push(arr);
while (end < arrLength) {
result.push(arr.slice(begin, end));
begin = begin + 3;
end = begin + 3;
if (end > arrLength) {
end = arrLength;
result.push(arr.slice(begin, end));
break;
}
}
return result;
}
formatArray(arr); // [["a", "b", "c"], ["d", "e", "f"], ["g", "h", "i"], ["j"]]
2016年4月19日 新增 数组合并方法:
var list = [
["11","22","33"],
["aa","bb"],
]
//最终的结果是
var list = [
["112233"],
["aabb"]
]
//方法一
var list=list.map(function (v) {
return new Array(v.join(""))
})
//方法二
var res = []
for(i in list) {
res.push(list[i].toString().replace(/,/g, ""))
}
//方法三
var result = [];
for(var i = 0, k = list.length; i < k; i++){
result.push(list[i].join("").split());
}
以上办法由以下大神指导,感谢!
头像 | 昵称 |
---|---|
锋云战锦 | |
小俞 | |
hiYoHoo | |
外籍杰克 | |
![]() |
明就 |
interjc | |
![]() |
fotuo |
声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。
- 上一篇: JS判断2个时间是否在同一周
- 下一篇:没有了