【问题标题】:Loop through dynamic array in javascript在javascript中循环遍历动态数组
【发布时间】:2013-04-04 18:17:30
【问题描述】:
  var arrPropertiesAndChannels = null, arrPrrp = null, arrLeftProp = null, arrMiddleDefault = null, arrRightProp = null;
        $(document).ready(function () {
            arrPropertiesAndChannels = { "props": [{ "prid": "61494", "prname": "Park Plaza Hotel Gurgaon", "pos": "1", "pinned": false, "display": true }, { "prid": "62998", "prname": "Lemon Tree City Center", "pos": "2", "pinned": false, "display": true }, { "prid": "62999", "prname": "Lemon Tree Hotel Udyog Vihar", "pos": "3", "pinned": false, "display": true }, { "prid": "78097", "prname": "Royal Retreat", "pos": "4", "pinned": false, "display": false }, { "prid": "78098", "prname": "SkRetreat", "pos": "5", "pinned": false, "display": false }, { "prid": "78099", "prname": "VBkRetreat", "pos": "6", "pinned": false, "display": false}], "chans": [{ "chid": "1", "chname": "FACEBOOK", "pos": "1" }, { "chid": "2", "chname": "TWITTER", "pos": "2" }, { "chid": "3", "chname": "NEWSLETTER", "pos": "3"}] };
            arrPrrp = arrPropertiesAndChannels.props;
            arrLeftProp = arrPrrp.slice(0, 0);
            arrMiddleDefault = arrPrrp.slice(0, 3);
            arrRightProp = arrPrrp.slice(3, 8);

        });


function navigRight() {
    var tempprid = '';



    $.each(arrMiddleDefault, function (i, data) {
        console.log(data.prid);
        if (data.pinned == false) {
            arrLeftProp.push(data);
            tempprid = data.prid;
            //console.log(tempprid);
            //break;
        }
    });



arrMiddleDefault = arrMiddleDefault.filter(function (el) {
        return el.prid !== tempprid;
    });

    arrMiddleDefault.push(arrRightProp.slice(0, 1));
    //console.log(arrMiddleDefault);
    //console.log(arrLeftProp);


    arrRightProp = arrRightProp.filter(function (el) {
        return el.prid !== arrRightProp.slice(0, 1)[0].prid;
    });

}

<div>
        <input type="button" value="<<" onclick="navigLeft()">
        <div id="dvTest">
        </div>
        <input type="button" value=">>" onclick="navigRight()">
    </div>

我有json数据变量

arrPropertiesAndChannels ={ "props": [{ "prid": "61494", "prname": "Park Plaza Hotel Gurgaon", "pos": "1", "pinned": false, "display": true }, { "prid": "62998", "prname": "Lemon Tree City Center", "pos": "2", "pinned": false, "display": true }, { "prid": "62999", "prname": "Lemon Tree Hotel Udyog Vihar", "pos": "3", "pinned": false, "display": true }, { "prid": "78097", "prname": "Royal Retreat", "pos": "4", "pinned": false, "display": false }, { "prid": "78098", "prname": "SkRetreat", "pos": "5", "pinned": false, "display": false }, { "prid": "78099", "prname": "VBkRetreat", "pos": "6", "pinned": false, "display": false}], "chans": [{ "chid": "1", "chname": "FACEBOOK", "pos": "1" }, { "chid": "2", "chname": "TWITTER", "pos": "2" }, { "chid": "3", "chname": "NEWSLETTER", "pos": "3"}] };

我们拥有的

arrPrrp = arrPropertiesAndChannels.props;
arrLeftProp = arrPrrp.slice(0, 0);
console.log(arrLeftProp);
arrMiddleDefault = arrPrrp.slice(0, 3);
console.log(arrMiddleDefault);
arrRightProp = arrPrrp.slice(3, 8);
console.log(arrRightProp);

我有一个按钮值是“>>”。单击此按钮后,javascript navigRight() 函数调用 ...其中 arrMiddleDefault 的第一项被推入 arrLeftProp 数组。这次第一项是 从 arrMiddleDefault 数组中删除,并将 arrRightProp 的第一项插入到 arrMiddleDefault 数组中。第一次单击按钮“>>”console.log(data.prid) 给出 61494,62998,62999 navigRight() 函数。第二次 console.log(data.prid) 给出 61494,62998,undefined, 第三次 console.log(data.prid) 给出 61494,undefined,undefined, 第四次 console.log(data.prid) 给出 undefined,undefined,undefined

【问题讨论】:

标签: javascript jquery-ui jquery jquery-plugins


【解决方案1】:

问题是当你打电话时:

arrMiddleDefault.push(arrRightProp.slice(0, 1));

当您确实想将第一个元素推入 arrMiddleDefault 数组时,您正在将数组推入 arrMiddleDefault 数组。

你可以改用这个:

arrMiddleDefault.push(arrRightProp.slice(0, 1)[0]);

但也可以缩短为:

arrMiddleDefault.push(arrRightProp[0]);

同样,您有以下内容:

   return el.prid !== arrRightProp.slice(0, 1)[0].prid;

您可以将其缩短为:

   return el.prid !== arrRightProp[0].prid;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-08-01
    • 2019-06-01
    • 2018-12-18
    • 1970-01-01
    • 1970-01-01
    • 2011-12-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多