return JS 数组中最大的 phone 数

return largest phone number in JS array

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

function myFunction(array) {
    var largest = array.replace(/\D/g, '');
    for (var i = 0; i < array.length; i++) {
        if (largest < array[i]) {
            largest = array[i];
        }
    }
    console.log(largest);
}

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

根据其他朋友的建议,您需要将 phone 数字用引号引起来,因为它们不是数字。完成后,尝试按照逻辑为您提取所需的结果

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"]);

这是一个备选方案。

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

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]]);

您将希望将数字作为字符串传递,正如 K phi 所建议的那样:

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

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

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

然后,如果要比较或添加字符串,则需要将字符串转换为 Number。您可以使用 parseInt(string,radix) 执行此操作。 radix 定义要使用的基数:在这种情况下,您将使用基数 10。因此,您的 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;

如果您想使用一些内置的 JavaScript 函数,那么您可以使用 map method of arrays to modify each element of the array, and the 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"]);

这是一个fiddlehttp://jsfiddle.net/v3b7gx6L/1/

这基本上就是 map 方法所做的

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