JavaScript函数不适用于数组中的0值

JavaScript function not working for 0 value in array

本文关键字:数组 函数 不适用 适用于 JavaScript      更新时间:2023-09-26

此函数用于查找变量列表中最高的变量,变量列表有五个id字母和一个数字。它适用于所有其他插槽,2、3、4、5、6、7、8、9、10,但不适用于1。我需要另一双眼睛。

getVer函数从id中获取数字;因此,具有getVer的ImpHt1将为1,而getShtNm将获得ImpHt。

function find_max_feat(array_input,ShtNm) {
    if (String(array_input[0]).length == 1) {
        var max = 0;
    }
    else {
        var max = getVer(array_input[0]);
    }
    var maxver = 0
    var len = array_input.length;
    for (var i = 0; i < len; i++) {
        if (String(array_input[i]).length > 1) {
            if (getShtNm(String(array_input[i])) == ShtNm) {
                if (getVer(String(array_input[i])) > maxver) {
                    var max = array_input[i];
                    var maxver = getVer(String(array_input[i]));
                }
            }
        }
    }
    return max;
}

0,DmnHt1_0,AltFm1_0,0,0,0,0

数组的一个例子,这就是为什么需要getVer。

这是一个图纸生成器,需要明确的是,但我已经在整个事情上工作了至少几天,甚至可能是一周或几周的断断续续的工作。

上面的数组是在选择壮举时生成的,find_max_feat数组用于查找组中的最高版本;它是在一个无限循环中运行的,因为我所做的一切都无法让它以我想要的方式工作。

function checkFeats() {
    updateFeatsel();
    t=setTimeout("checkFeats()",1000);
}
function updateFeatsel() {
    curselarray = new Array();
    var selinc = 1;
    while (selinc <= 10) {
        var selincar = selinc - 1;
        var selid = document.getElementById(String('ftlst' + selinc));
        if (getVer(selid.options[selid.selectedIndex].title)) {
                curselarray[selincar] = selid.options[selid.selectedIndex].title;
        }
        else {
            curselarray[selincar] = 0;
        }
        selinc++;
    }
    document.getElementById('debug1').innerHTML = curselarray.valueOf();
    featSelch('hlthm','ImpHt',healthom);
    featSelch('strdmgm','ImpPd',Strpdom);
    featSelch('strwhtm','ImpLi',Strwhtom);
    featSelch('strsltm','EnhIt',StrSltom);
    featSelch('endsurm','ImpEn',EndSurom);
    featSelch('endsokm','ImpDf',EndSokom);
    featSelch('intelmpm','ImpMg',Intelmom);
    featSelch('willsokm','ImpMs',Willsokom);
    featSelch('luckrllm','ImpLu',Lukrllom);
    featSelch('luckpntm','EnhLu',Lukpntom);
    featSelch('hlthbn','DmnHt',0);
    featSelch('strbn','SupSt',0);
    featSelch('luckbn','DmnLu',0);
    featSelch('endbn','Armor',0)
    document.getElementById('debug2').innerHTML = find_max_feat(curselarray,'DmnHt');
    updateAmounts();
}
function featSelch(sid,fshtnm,defval) {
    return document.getElementById(sid).innerHTML = getFeatvalue(fshtnm,defval);
}

这是因为您使用getVer(array_input[0])而不是array_input[0]初始化max。如果第一项是最高的并且版本号为零,则使用初始值。

更改此项:

var max = getVer(array_input[0]);

进入:

var max = array_input[0];