Javascript 返回在字符串数组中找到的最大数字
我有一个对象数组。对象有一个名为Javascript 返回在字符串数组中找到的最大数字,javascript,jquery,Javascript,Jquery,我有一个对象数组。对象有一个名为level的属性,该属性是一个包含数字且格式一致的字符串 我试图找到最高的数字,只返回那个数字,但我似乎被阻止了如何从我当前的代码继续 下面是我当前代码的一部分: 以下是我的JavaScript: var myArray = [ { color: 'blue', level: 'L1' }, { color: 'red', level: 'L1' }, {
level
的属性,该属性是一个包含数字且格式一致的字符串
我试图找到最高的数字,只返回那个数字,但我似乎被阻止了如何从我当前的代码继续
下面是我当前代码的一部分:
以下是我的JavaScript:
var myArray = [
{
color: 'blue',
level: 'L1'
},
{
color: 'red',
level: 'L1'
},
{
color: 'green',
level: 'L2'
},
{
color: 'yellow',
level: 'L2'
},
{
color: 'purple',
level: 'L3'
}
];
for (var i = 0; i < myArray.length; i++) {
console.log( myArray[i].level.substring(1,2) );
};
var myArray=[
{
颜色:“蓝色”,
级别:“L1”
},
{
颜色:“红色”,
级别:“L1”
},
{
颜色:“绿色”,
级别:“L2”
},
{
颜色:'黄色',
级别:“L2”
},
{
颜色:'紫色',
级别:“L3”
}
];
对于(var i=0;i
我试图得到的结果是只返回上面示例中的数字“3”。最大的数字可能并不总是在数组中的最后一个对象中,但它的格式总是L#。试试这个():
var highestNum=0;
对于(变量i=0;i最大值){
highestNum=num;
}
}
console.log(highestNum);
更新: 正如King King在对您的问题的评论中提到的,如果没有其他特殊原因将您的级别设置为这种格式:
L#
,您最好只将数字放在那里(以
int
格式,而不是string
)
结果是这一行:var num=parseInt(myArray[i].level.substring(1))代码>
变为此行:
var num=myArray[i]。级别代码>
这就去掉了substring()
和parseInt()
函数,使代码更加有效
小提琴:试试这个():
var highestNum=0;
对于(变量i=0;i最大值){
highestNum=num;
}
}
console.log(highestNum);
更新:
正如King King在对您的问题的评论中提到的,如果没有其他特殊原因将您的级别设置为这种格式:L#
,
您最好只将数字放在那里(以int
格式,而不是string
)
结果是这一行:
var num=parseInt(myArray[i].level.substring(1))代码>
变为此行:
var num=myArray[i]。级别代码>
这就去掉了substring()
和parseInt()
函数,使代码更加有效
小提琴:另一个选项使用:
另一个选择是:
使用气泡排序(适用于非常小的集合),您可以执行以下操作:
var _sorted = myArray.sort(function(a,b) {
return b.level.substring(1,2) - a.level.substring(1,2);
});
console.log(_sorted[0]);
现在请注意,这部分解决了您的问题,因为如果您有多个L3,则只会选择第一个。希望这能让您走上正确的道路。使用气泡排序,这对于非常小的集合是可行的,您可以执行以下操作:
var _sorted = myArray.sort(function(a,b) {
return b.level.substring(1,2) - a.level.substring(1,2);
});
console.log(_sorted[0]);
function sortDSC(a,b) {
if (a.level < b.level)
return 1;
if (a.level > b.level)
return -1;
return 0;
}
myArray.sort(sortDSC);
var maxL = myArray[0].level.substring(1, myArray[0].level.length);
console.log(maxL);//3
现在请注意,这部分解决了您的问题,因为如果您有多个L3,则只会选择第一个。希望这能让您走上正确的道路。函数sortDSC(a,b){
function sortDSC(a,b) {
if (a.level < b.level)
return 1;
if (a.level > b.level)
return -1;
return 0;
}
myArray.sort(sortDSC);
var maxL = myArray[0].level.substring(1, myArray[0].level.length);
console.log(maxL);//3
如果(a级b级)
返回-1;
返回0;
}
myArray.sort(sortDSC);
var maxL=myArray[0].level.substring(1,myArray[0].level.length);
console.log(maxL)//3.
功能sortDSC(a、b){
如果(a级b级)
返回-1;
返回0;
}
myArray.sort(sortDSC);
var maxL=myArray[0].level.substring(1,myArray[0].level.length);
console.log(maxL)//3.
您可能需要考虑“level”属性可能存在的空值
var maxL= 0, next;
myArray.forEach(function(itm){
next= (itm.level || 'L0').slice(1);
if(maxL-next<0) maxL= +next;
});
console.log(maxL)
var maxL=0,下一步;
myArray.forEach(函数(itm){
next=(itm.level | |'L0')。切片(1);
如果(maxL next,您可能需要考虑'level'属性的可能空值
var maxL= 0, next;
myArray.forEach(function(itm){
next= (itm.level || 'L0').slice(1);
if(maxL-next<0) maxL= +next;
});
console.log(maxL)
var maxL=0,下一步;
myArray.forEach(函数(itm){
next=(itm.level | |'L0')。切片(1);
如果(maxL nextdo您的意思是
在L
中只代表数字吗?如果是这样,用空字符串替换L
,那么您就有了数字部分。@KingKing是的。
可以是任何数字,但L
部分将始终是L,并且在数字之前。因此L1
和L101
是可能的。我想我需要比较数字来确定哪一个是最高的,但我似乎无法确定。你可以试试这个,你的意思是
代表L
中的数字吗?如果是这样,用空字符串替换L
,那么你就有了数字部分。@kinking是的。
可以是任何数字,但L
部分始终是L,并且在数字之前。因此,L1
和L101
是可能的。我想我需要比较数字来确定哪个是最高的,但我似乎无法确定。你可以试试这个,如果数字超过一位数怎么办?@myfunkyside Fair point。因为q,我没有考虑过这一点问题。我们将使用substr(1)
而不是像你的答案中那样的substring(1,2)
。+1从我这里顺便说一下。substring(1)
也可以,第二个索引是可选的,没有它意味着从开始索引到结束都是字符串。@DanielCook-这个答案比我的更快/更轻吗?(我真的感兴趣)哇,这是一个相当独立的数字,如果数字长度超过一位数怎么办?@myfunkyside Fair point。因为这个问题,我没有考虑过这个问题。我们会使用substr(1)
而不是你答案中的substring(1,2)
。substring(1)
也可以,第二个索引是可选的,没有它意味着从开始索引到结束都要获取字符串。@DanielCook-这个答案比我的更快/更轻吗?(我是真心的)