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