【问题标题】:Find the largest number in an array of alphanumeric string in Jquery在Jquery中查找字母数字字符串数组中的最大数字
【发布时间】:2017-01-03 06:18:28
【问题描述】:

我有一个包含如下数据的数组

 var arr = [Daaguva1, Dagguva2, Dagguva3, Dagguva4, Daggu5, Dag6, Dagguv7, Dagg8, Daggs9, Dagguvati10];

我想得到这个字符串数组中的最大数字,即 10 。 我需要这个数字,以便我可以自动将数字增加到 11 。有什么帮助吗?

【问题讨论】:

  • 似乎无效的数组。
  • 数组应该如下: var arr = ['Daaguva1', 'Dagguva2', 'Dagguva3', 'Dagguva4', 'Daggu5', 'Dag6', 'Dagguv7', 'Dagg8', 'Daggs9', 'Dagguvati10'];

标签: javascript jquery arrays validation sorting


【解决方案1】:

使用Array#reduce方法

var arr = ['Daaguva1', 'Dagguva2', 'Dagguva3', 'Dagguva4', 'Daggu5', 'Dag6', 'Dagguv7', 'Dagg8', 'Daggs9', 'Dagguvati10'];

// iterate over the array
var num = arr.reduce(function(g, str) {
  // get the number from string and parse it
  var num = parseInt(str.match(/\d+/)[0], 10) || 0;
  // return the greater value
  return g < num ? num : g;
  // set the initial value as lowest value 
  // either negative infinity or 0 as your requirement
}, -Infinity);

console.log(num);

【讨论】:

  • @ArpitaDutta : 很高兴为您提供帮助
【解决方案2】:

如果所有名称都匹配相同的结构(字母后跟目标数字) - 然后使用正则表达式去除所有非数字字符并 parseInt 剩余部分以产生一个数字。设置一个高分并遍历数组并将精简后的数字与高值进行比较,如果它更高 - 将最高值设置为该值。

  var arr = ['Daaguva1', 'Dagguva2', 'Dagguva3', 'Dagguva4', 'Daggu5', 'Dag6', 'Dagguv7', 'Dagg8', 'Daggs9', 'Dagguvati10'];
  
  var high=0;
  for(i=0; i<arr.length; i++){
    var num = parseInt(arr[i].replace(/\D+/g, ''));
    if(num > high){high = num};
    } 
  console.log('highest number is: ' + high);
  
  var nextNum = high +=1;
  console.log('next number will be: '+ nextNum )

【讨论】:

  • 非常感谢。你是救世主:)
【解决方案3】:
function getMaxValuefromArray() {
     var maxNum = parseInt(arr[0].replace( /^\D+/g, ''), 10),
         tempNum;

     for(var i=0; i<arr.length; i++){
          tempNum = parseInt(arr[i].replace( /^\D+/g, ''), 10);
          if (tempNum > maxNum) {
                   maxNum = tempNum;
          }
     }
     return maxNum;

}

小提琴https://jsfiddle.net/881juLr9/

【讨论】:

  • 谢谢.. 它的作用就像魅力一样。但我只能将一个标记为答案。 :(
【解决方案4】:

var regEx = /\d+/;
var arr = ["Daaguva1", "Dagguva2", "Dagguva3", "Dagguva4", "Daggu5", "Dag6", "Dagguv7", "Dagg8", "Dagguvati10"];

var bigestIndex=0;
arr.map(function(data){
	var numIndex=data.match(regEx).index;
	if(numIndex>bigestIndex)
	bigestIndex=numIndex;
});

console.log('bigestIndex',bigestIndex);

【讨论】:

    【解决方案5】:

    就这么简单。

    var arr = ['Daaguva1', 'Dagguva2', 'Dagguva3', 'Dagguva4', 'Daggu5', 'Dag6', 'Dagguv7', 'Dagg8', 'Daggs9', 'Dagguvati10'];
    var r = /\d+/; // this is regex to detect digits
    var max = 0;
    for(var i= 0 ; i<arr.length;i++){ // iterate over the array
        if(max < parseInt(arr[i].match(r)[0])){ // match it and if larger number found then assign it to `max`
            max = arr[i].match(r)[0];
        }
    }
    console.log(max);
    

    JsFiddle

    【讨论】:

      猜你喜欢
      • 2016-01-02
      • 1970-01-01
      • 2017-03-20
      • 1970-01-01
      • 1970-01-01
      • 2022-06-12
      • 2020-06-19
      • 2014-02-15
      • 2016-02-28
      相关资源
      最近更新 更多