複数の配列の組み合わせを扱う場合、配列につなぎ合わせることがよくあります. 今日は配列の変換について話します.
2 次元 (またはそれ以上) の可変 1 次元配列
3番目の適用方法をよく使用します
1.es5のreduceとconcatを組み合わせて使う
var list = [
[111,222,3333,444],
[555,666,777],
[888],
[999,1213]
]
var lists = list.reduce((a,b) => a.concat(b))
console.log(lists)
2.ES6のフラット処理を利用する
var list = [
[111,222,3333,444],
[555,666,777],
[888],
[999,1213]
]
var lists = list.flat()
console.log(lists)
3.適用で実現
var list = [
[111,222,3333,444],
[555,666,777],
[888],
[999,1213]
]
var lists = [].concat.apply([],list)
console.log(lists)
4.通話で実現
var list = [
[111,222,3333,444],
[555,666,777],
[888],
[999,1213]
]
var lists = [].concat.call([],...list)
console.log(lists)
5. 再帰を使用して多次元配列を 1 次元配列に変換する
var list = [
[111,222,3333,444],
[ 555, 666, 777, [123] ],
[ 888 ],
[ 999, 1212 ]
]
function flatten(arr) {
return [].concat(...arr.map(x=>Array.isArray(x) ? flatten(x) : x))
}
var lists = flatten(list)
console.log(lists)
6. 単純な多次元配列の変換
var list = [
[111,222,3333,444],
[555,666,777,[123]],
[888],
[999,1212]
]
var lists = (list + '').split(',')
console.log(lists.map(Number))
// let oneArr = values?.map((el) => { // return el.getData.map((item) => { // return { // reportId: item.id, // reportQty: item.editReportQty // }; // }); // }); // var params = [].concat.apply([], oneArr); // console.log(params);