簡體   English   中英

使用JavaScript獲取數組中的最大字符串值

[英]get max string value in array using javascript

我有一個包含以下格式的字符串的數組:

1-a1,1-a2,1-a3,1-a4,2-b1,2-b2,2-b3,2-b4,3-c1,3-c2,3-c3,4-d1,4-d2

其中abcd是數字。

現在,如何獲得此數組中a最大值, b最大值, c最大值, d最大值?

我對正則表達式了解不多,但是請嘗試以下操作:

var numbers = [0, 0, 0, 0]; //a = 0, b = 1, c = 2, d = 3

string.replace(/(\d)-(\d+)(,|$)/g, function($0, $1, $2) { numbers[parseInt($1) - 1] = Math.max(parseInt($2), numbers[parseInt($1) - 1]); });

編輯:我不知道這是一個數組,結果應該是...。 所以這是我對您的問題的解決方案:

var numbers = [0, 0, 0, 0], i, j;

for(i=0,j=array.length;i<j;++i) {
    array[i] = array[i].split('-');

    numbers[parseInt(array[i][0]) - 1] = Math.max(numbers[parseInt(array[i][0]) - 1], parseInt(array[i][1]));
}

JSfiddle: http : //jsfiddle.net/UQWLe/1/

因此,假設您的數組按您顯示的順序排序,並且“ 1-a1”表示“組1,數字,索引1”(“ 1-a4”表示“組1,數字,索引4”和“ 2-b1” ”表示“第2組,數字,索引1”,依此類推),並假設所有部分都可以是一個以上的數字(如“ 11-8812”,也稱為“第11組,數字為88,索引為12”) );您可能會遇到類似:

var array = ["1-81","1-102","1-93","1-24","2-881","2-122","2-13","2-984","3-2121","3-12","3-93","4-41","4-22"]
var max = {};

var group = "", count = 0;

for (var i = 0; i < array.length; i++) {
    var parts = array[i].split("-");

    if (group !== parts[0]) {
        group = parts[0];
        count = 0;
    }

    count++;

    var number = +parts[1].replace(new RegExp(count + "$"), "");

    max[group] = Math.max(max[group] || 0, number)
}

console.log(max)

您還可以為max使用數組而不是對象。 如果最后一個數字始終是一個字符,則可以簡化整個過程。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM