0

次のデータがあり、email1 を password1 に、email2 を password2 に、email:password という形式で一致させる方法を考えています。やればできますが、オブジェクトに 10 個以上の項目が入力されるobject[0] +":"+ object[1]object[2] +":"+ object[3]、この方法はあまり効率的ではありません。ループでこれを行うにはどうすればよいですか?

次のコードを使用して構造を作成しています。

$("#accounts").on("submit", function(event) {
    event.preventDefault();
    var form = $(this).serializeArray();
});

ここに画像の説明を入力

4

3 に答える 3

2

for ループでインクリメントを変更できます。試す:

var results = [];
For(var i = 0; i < vals.length; i += 2) {
    results.push( { vals[i].value: vals[i+1].value });
}
于 2013-09-20T06:45:50.740 に答える
0

ループステップを増やしてみてください。

参照: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Statements?redirectlocale=en-US&redirectslug=JavaScript%2FGuide%2FStatements#for_Statement

コード:

var testMe=new Array({"name":"em1"},{"pwd":"pwd1"},{"name":"em2"},{"pwd":"em2"});
console.log(testMe)
for (var i = 0; i < testMe.length; i+=2) {
  console.log(testMe[i].name+"-->"+testMe[i+1].pwd)
}

デモ: http://jsfiddle.net/IrvinDominin/qbVwH/

于 2013-09-20T06:50:13.167 に答える
0
//
Array.prototype.e = Array.prototype.forEach;
function pair( arr ) {
    var len = arr.length;
    if ( len ) {
        do {
            arr.push( arr.splice( 0, 2 ) );
        } while ( ( len -= 2 ) >= 2 );
    }
    return arr;
};
var yourData = [
                { name:"email1", value:"321" },
                { name:"pw1",    value:"123" },
                { name:"email2", value:"qwe" },
                { name:"pw2",    value:"ewq" },
                { name:"email3", value:"234" },
                { name:"pw3",    value:"432" }
               ],
    pairs    = {};
pair( yourData )
.e(
    function ( P ) {
        pairs[ P[0].name ] = P[1].name;
    }
);
console.log( pairs );
// Object { email1="pw1", email2="pw2", email3="pw4"}
//
于 2013-09-20T06:44:46.750 に答える