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, '');
}
我必须从 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, '');
}