Javascript push() 函数没有将对象添加到数组中

我有一个 for 循环,它循环使用 jquery 选择器收集的一些 html 元素,并从中提取一些文本或值。每个循环都会创建一个新对象。对象很简单,它只是文本和一个值。Console.log 确认每个循环都成功创建了对象。


在 for 循环之外,我有一个初始化为数组的变量 (kvObjs)。在 for 循环结束时,我将新对象推送到数组中。但是 console.log 确认数组保持为空。


这是一段较大代码的一部分。这似乎是不起作用的部分。不工作的特定函数是 getKVs(),好吧,除了试图将对象推送到数组上的部分之外,它可以工作。


我向你保证,我浏览了所有或几乎所有的“类似问题”,但没有任何反应。不过,我可能错过了其中的某些内容。我觉得我忽略了一些明显的东西。


我试图手动创建一个数组 (var x = ["bob", "steve", "frank"]) 然后设置另一个等于它的变量 (var y = x) 并且这似乎有效。我什至创建了一个对象数组,如 var x = [{"Key":"Bob","Value":10}, {"Key":"Steve","Value":5}],我认为这对。但我的 for 循环没有。


<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>


<style>

    .Jobs {

        width: 300px;

        margin: 0 auto;

    }


    .Jobs li {

        display: grid;

        grid-template-columns: 1fr 50px;

        padding: 2px 5px 2px 7px;

        align-items: center;


    }


    .Jobs .value {

        text-align: right;

    }


    .Jobs p.value {

        padding-right: 7px;

    }


    .even {

        background-color: rgba(0,0,0,0.2);

    }

</style>


<div class="Jobs">

    <ul>

        <li class="kvp">

            <p class="key">Bob</p>

            <input class="value" type="number" value="3"/>

        </li>


        <li class="kvp even">

            <p class="key">Frank</p>

            <input class="value" type="number" value="2"/>

        </li>


        <li class="kvp">

            <p class="key">Tom</p>

            <input class="value" type="number" value="8"/>

        </li>


        <li class="kvp total even">

            <p class="key">Total</p>

            <p class="value">13</p>

        </li>

    </ul>

</div>


<script>


    class KV {

        constructor(key, value) {

            this.Key = key;

            this.Value = value;

        }

    }


    function getKVs(type) {

        type = "." + type + " .kvp";

        var elmts = $(type);

        var kvObjs = [];


        for (var i = 0; i < elmts.length; i++) {

            var elmt = $(elmts[i]);

            if(elmt.hasClass("total")) {

                // do nothing

            } 

我不断得到一个空数组。


蛊毒传说
浏览 603回答 3
3回答

慕容3067478

看来你有一个语法错误:use&nbsp;kvObjs.push(kv);代替kvObjs.push[kv];

尚方宝剑之说

看起来您的代码中有一个小错误。查看将对象推入数组的行:kvObjs.push[kv];您需要在 .push() 方法上使用括号。kvObjs.push(kv);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript