jsは配列グループ化を実現します
13534 ワード
このような行列があります.
[‘フランス’、’オーストラリア’、’チリ’、‘ニュージーランド’、’スペイン’、’カナダ’、’アルゼンチン’、‘米国’、’0’、‘国産’、’プエルトリコ’、イギリス’、ベルギー’、ドイツ’、’イタリア’、’イタリア’
今は3つごとに1つの配列に分けてほしいです.
[‘フランス’、’オーストラリア’、’チリ’、[‘ニュージーランド’、’スペイン’、’カナダ’、[[アルゼンチン’、’米国’、’0’、[‘国産’、’プエルトリコ’、イギリス]]、[[ベルギー]、ドイツ'、ドイツ']]、[[イタリア]]]
実現方法
第一の方法:
第三の方法:
顔写真
ニックネーム
前線がとどろく
兪さん
hiYo Hoo
外国籍のジャッキ
明くる日
interjc
fotuo
[‘フランス’、’オーストラリア’、’チリ’、‘ニュージーランド’、’スペイン’、’カナダ’、’アルゼンチン’、‘米国’、’0’、‘国産’、’プエルトリコ’、イギリス’、ベルギー’、ドイツ’、’イタリア’、’イタリア’
今は3つごとに1つの配列に分けてほしいです.
[‘フランス’、’オーストラリア’、’チリ’、[‘ニュージーランド’、’スペイン’、’カナダ’、[[アルゼンチン’、’米国’、’0’、[‘国産’、’プエルトリコ’、イギリス]]、[[ベルギー]、ドイツ'、ドイツ']]、[[イタリア]]]
実現方法
第一の方法:
var data = [' ',' ',' ',' ',' ',' ',' ',' ','0',' ',' ',' ',' ',' ',' ',' ',];
var result = [];
for(var i=0,len=data.length;ii+=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; iif(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());
}
以上の方法は以下の大神に指導されました.ありがとうございます.顔写真
ニックネーム
前線がとどろく
兪さん
hiYo Hoo
外国籍のジャッキ
明くる日
interjc
fotuo