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

Javascript 返回JS数组中最大的电话号码,javascript,arrays,function,replace,phone-number,Javascript,Arrays,Function,Replace,Phone Number,我必须从Javascript数组中返回最大的电话号码,而不是索引。我试图删除非数字字符,然后找到最大的数字。我是新手,对语法没有经验。很多例子说明了我的部分问题。我不知道如何将它们连接到一个函数中,以及如何返回答案。请帮帮我。以下是我所拥有的: function myFunction(array) { var largest = array.replace(/\D/g, ''); for (var i = 0; i < array.length; i++) {

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

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]);
函数myFunction(数组){
变量最大=数组。替换(/\D/g');
对于(var i=0;i
正如其他朋友建议的那样,您需要将电话号码用引号括起来,因为它们不是电话号码。完成后,尝试以下逻辑为您提取所需的结果

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"]);
函数myFunction(数组){
//根据电话号码创建号码数组
var numberArray=array.map(函数(电话){
返回parseInt(phone.replace(/\D/g');
});
//现在比较并找到一组数字中的最大值就很简单了
var最大指数=0;
var largestNumber=numberArray[0];
对于(变量i=0;i
这是另一种选择

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


正如K phi建议的那样,您将希望以字符串形式传递数字:

myFunction(["509-111-1111", "509-222-2222", "509-333-3333"]);
首先,您需要删除字符串中的破折号。您可以使用
replace
方法执行此操作,该方法需要搜索一个字符,并使用一个字符替换它。对于
replace
要匹配破折号的所有实例,我们需要使用正则表达式,带有
g
标志,表示“全局”。我们正在查找破折号并将其替换为零,这相当于删除破折号。在本例中,您将执行以下操作:

"509-111-1111".replace(/-/g,'');
=>"5091111111"
如果要比较或添加字符串,则需要将字符串转换为
Number
s。您可以使用
parseInt(字符串,基数)
完成此操作<代码>基数
定义要使用的基数:在本例中,您将使用基数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;
var number=[];

对于(var i=0;i如果您想要使用一些内置JavaScript函数,那么您可以使用来修改数组的每个元素,并使用方法来查找最大值

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"]);
这是一把小提琴

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

for(var j = 0; j < array.length; j++) {
  array[j] = array[j].replace(/\D/g, '');  
}
for(var j=0;j
509-111-1111不是一个数字。如果它是一个字符串,你应该用“509-111-1111”环绕它。你说的“最大的电话号码”是什么意思?数字最大的电话号码?各部分总和最大的电话号码?@DanielMendoza请参见@KФ
“509-111-1111”的命令。替换(“-”,“”);
将只替换第一个匹配项。您必须执行类似于“509-111-1111”的操作。替换(/-/g,”);
替换所有事件。感谢您的洞察力。我在我拥有的内容和引号之后添加了.map到我的函数。但我没有使用parseInt。这是缺少的链接。在此之前,我返回了正确的号码,但格式错误。parseInt在添加后将电话号码返回到其原始格式。替换。总之,简单地解释一下。再次感谢,这给了我很多启示。谢谢你的建议。不过我找到了一种有效的方法。我认为如果你有100个数字或20个偶数,这种方法可能不起作用。而且它缺少一些东西。谢谢你发送它。@DanielMendoza如果你需要将它用于多个数字,你可以再做一个。@DanielMendoza她在里面循环,然后把它自己的每一部分都加到字符串
res
。希望这会有帮助!谢谢你。我只是再重复一遍,因为,我不知道为什么!我不确定第三行的,10是什么。我的第一个想法是把它应用到每个索引中的十个整数上?@DanielMendoza这是第二个参数e parseInt函数。它告诉parseInt你正在解析的整数的基数,基本上基数定义了数字的基数,比如基数10,基数2等等。在旧的浏览器中,它需要表示基数10,因为它不是默认值,没有它会做一些意想不到的事情。谢谢你的解释。我已经走了!哈哈,谢谢分享知识
for(var j = 0; j < array.length; j++) {
  array[j] = array[j].replace(/\D/g, '');  
}