[英]Filter Javascript array based on first integer of each array item
我有一個像這樣的數組:
var array = [102,103,104,201,203,204,303,301,302,405,406,408,101];
我希望能夠基於數組每個成員的第一個整數返回數組,如下所示:
newArray = [101,102,103,104];
該數組將根據類似於以下表達式的內容返回:
array[i]/100|0 === j;
其中j可以是1,2,3或4。
eg. 405/100|0 === 4 // partition into the array starting with 4.
有人知道我可以根據第一個數字將此數組有效地過濾為另一個數組的方法嗎?
我想這個問題應該是,為什么我不能使用lodash過濾器功能? 僅適用於收藏集嗎? 為什么我需要在這里使用JS .filter?
您可以將數字除以100,並將其用作結果數組的索引。
var array = [102, 103, 104, 201, 203, 204, 303, 301, 302, 405, 406, 408, 101], result = []; array.sort(function (a, b) { return a - b; }); array.filter(function (a) { var index = Math.floor(a / 100) - 1; result[index] = result[index] || []; result[index].push(a); }); console.log(result);
您可以使用.filter()
,如下所示:
function filterDigit(array, j) { return array.filter( x => Math.floor(x/100) == j); } var array = [102,103,104,201,203,204,303,301,302,405,406,408,101]; var newArray = filterDigit(array, 1); console.log(newArray);
用這樣的子列表創建列表
var PARTISION_DIVISOR = 100
var array = [102,103,104,201,203,204,303,301,302,405,406,408,101];
array.sort()
var new_list = []
for (var i = 0; i<array.length; i++) {
sub_index = (array[i] / PARTISION_DIVISOR)
sub_index = Math.floor(sub_index)
new_list[sub_index] = new_list[sub_index] || []
new_list[Math.floor(sub_index)].push(array[i])
}
new_list
查看工作示例https://repl.it/ExSY
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.