返回JS数组中最大的电话号码

时间:2015-11-28 20:11:05

标签: javascript arrays function replace phone-number

我必须从Javascript中的数组返回最大的电话号码,而不是索引。我试图删除非数字字符,然后找到最大的数字。我是新手,对语法没有经验。很多例子都显示了我的部分问题。我不知道如何将它们连接到一个函数以及如何返回答案。请帮帮我。继承人我所拥有的:

@-ms-viewport {
    width: auto !important;
}

4 个答案:

答案 0 :(得分:1)

正如其他朋友所建议的那样,你需要将电话号码换成引号,因为它们不是数字。完成后,尝试按照逻辑为您提取所需的结果

function myFunction(array) {

  // Creates the number array against the telephone numbers 
  var numberArray = array.map(function(phone){
     return parseInt(phone.replace(/\D/g, ''));
  });


  // Now it is simple to compare and find the largest in an array of numbers
  var largestIndex = 0;
  var largestNumber = numberArray[0];

  for (var i = 0; i < numberArray.length; i++) {
     if (largestNumber < numberArray[i]) {
        largestNumber = numberArray[i];
        largestIndex = i;
     }
  }
  // Fetch the value against the largest index from the phone numbers array
  console.log(array[largestIndex]);
}

myFunction(["509 - 111 - 1111", "509 - 222 - 2222", "509 - 333 - 3333", "509 - 333 - 3332"]);

答案 1 :(得分:0)

这是另一种选择。

我建议将数字的每个部分保留在一个数组中(使它们成为整数)。

function myFunction(array){
    var res="";
    for(var i=0,l=array.length;l>l;i++){
         res=res+array[i][0]+' - '+array[i][1]+' - '+array[i][2]+'\n'
    }
    console.log(res)
}

myFunction([[509,111,1111],[509,222,2222],[509,333,3333]]);

答案 2 :(得分:0)

你想要将数字作为字符串传递,就像K phi建议的那样:

myFunction(["509-111-1111", "509-222-2222", "509-333-3333"]);

首先,您需要从字符串中删除破折号。您可以使用replace方法执行此操作,该方法需要搜索字符,并使用字符替换它。要使replace匹配短划线的所有实例,我们需要使用正则表达式,g标志表示“全局”。我们找到了一个破折号,并将其替换为空,这相当于删除破折号。在这种情况下,你会这样做:

"509-111-1111".replace(/-/g,'');
=>"5091111111"

如果要比较或添加字符串,则需要将字符串转换为Number s。您可以使用parseInt(string,radix)执行此操作。 radix定义了要使用的基数:在这种情况下,您将使用十进制数。因此,您的parseInt来电将如下所示:

parseInt("5091111111",10); 
=> 5091111111

您可以对参数中的每个字符串执行此过程,然后比较它们以确定最大的字符串:

var numbers = [];
for (var i=0;i<array.length;i++) {
    var numberString = array[i].replace(/-/g,'');
    var number = parseInt(numberString,10);
    numbers[i] = number;
}
var largestNumber = numbers[0];
for (var i=0;i<numbers.length;i++) {
    if (numbers[i] > largestNumber) {
         largestNumber = numbers[i];
    }
}
return largestNumber;

答案 3 :(得分:0)

如果你想使用一些内置的JavaScript函数,那么你可以使用map method of arrays来修改数组的每个元素,使用Math.max方法来查找最大的数字。

function myFunction(array) {
    var array = array.map(function(elementOfArrayAtIndex) {
        return parseInt(elementOfArrayAtIndex.replace(/\D/g, ''), 10);
    });
    var largest = Math.max.apply(null, array);
    console.log(largest);
}

myFunction(["509 - 111 - 1111", "509 - 222 - 2222", "509 - 333 - 3333"]);

这是一个小提琴http://jsfiddle.net/v3b7gx6L/1/

这基本上就是map方法正在做的事情

for(var j = 0; j < array.length; j++) {
  array[j] = array[j].replace(/\D/g, '');  
}