Closed6
lodashが便利。
配列を指定要素数ごとのチャンクに分けられる。
_.chunk(['a', 'b', 'c', 'd'], 2);
// => [['a', 'b'], ['c', 'd']]
_.chunk(['a', 'b', 'c', 'd'], 3);
// => [['a', 'b', 'c'], ['d']]
Amazon DynamoDBのBatchWriteItem()や、Firebase Cloud MessagingのsendMulticast()を実行する際に役立った。
JS組み込み関数だけを使う場合。
function sliceIntoChunks(arr, chunkSize) {
const res = [];
for (let i = 0; i < arr.length; i += chunkSize) {
const chunk = arr.slice(i, i + chunkSize);
res.push(chunk);
}
return res;
}
const arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
console.log(sliceIntoChunks(arr, 3));
key-valueペアをオブジェクト化できる。
_.fromPairs([['a', 1], ['b', 2]]);
// => { 'a': 1, 'b': 2 }
JS組み込み関数だけを使う場合。
const entries = new Map([
['foo', 'bar'],
['baz', 42]
]);
const obj = Object.fromEntries(entries);
console.log(obj);
// Expected output: Object { foo: "bar", baz: 42 }
これはfromEntries()
を使えば良さそう。
配列のユニオン。
_.union([2], [1, 2]);
// => [2, 1]
使わない場合。
var a = [34, 35, 45, 48, 49];
var b = [48, 55];
var union = [...new Set([...a, ...b])];
ユニーク。
_.uniq([2, 1, 2]);
// => [2, 1]
使わない場合。
[...new Set(array)];
ソート。すべてのiterateesに順序を指定可能。指定されていないiterateesは値が昇順で並べ替えられる。
var users = [
{ 'user': 'fred', 'age': 48 },
{ 'user': 'barney', 'age': 34 },
{ 'user': 'fred', 'age': 40 },
{ 'user': 'barney', 'age': 36 }
];
// Sort by `user` in ascending order and by `age` in descending order.
_.orderBy(users, ['user', 'age'], ['asc', 'desc']);
// => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]
数値の配列はlodashでも並び替えできない。Array.prototype.sort()
だとユニコード順に並び替えられてしまう。
ソート。iteratees は 1 つの引数のみ。iteratees以外はすべての値が元の順を維持する。(安定した並び替え)
var users = [
{ 'user': 'fred', 'age': 48 },
{ 'user': 'barney', 'age': 36 },
{ 'user': 'fred', 'age': 40 },
{ 'user': 'barney', 'age': 34 }
];
_.sortBy(users, [function(o) { return o.user; }]);
// => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]
_.sortBy(users, ['user', 'age']);
// => objects for [['barney', 34], ['barney', 36], ['fred', 40], ['fred', 48]]
このスクラップは2023/02/04にクローズされました