0

合計が 50 になるまで、配列内の 3 つのオブジェクトをコピーしたいと考えています。これを行うにはどうすればよいですか?

var listings = [
    { 
        address: "123 41st St",
        bedrooms: 2,
        bathrooms: 2,
        image: "img/1bdrm_a.jpg"
    },
    { 
        address: "234 52nd St",
        bedrooms: 1,
        bathrooms: 1,
        image: "img/1bdrm_b.jpg"
    },
    { 
        address: "345 63rd St",
        bedrooms: 3,
        bathrooms: 2,
        image: "img/1bdrm_c.jpg"
    }
];
4

4 に答える 4

4

このループはトリックを行う必要があります:

for (var i = 3; i < 50; i++) {
  listings[i] = listings[i%3];
}

魔法は剰余演算子 ( %) にあります。 i必要に応じてインクリメントできますがi%3、0、1、2 をこの順序で返し続けます。

于 2013-04-02T23:08:37.127 に答える
2

このような方法を使用して、各アイテムのディープ コピー (クローン) を作成できます。%最終的には何の役にも立たないため、このソリューションでの使用は避けることができます。

jsフィドル

var i = 0;
while (listings.length < 50) {
    listings[listings.length] = clone(listings[i++]);
}
console.log(listings);


//https://stackoverflow.com/a/122190/1156119
function clone(obj){
    if(obj == null || typeof(obj) != 'object')
        return obj;

    var temp = obj.constructor(); // changed

    for(var key in obj)
        temp[key] = clone(obj[key]);
    return temp;
}
于 2013-04-02T23:08:19.277 に答える
0
var listings = [
    { 
        address: "123 41st St",
        bedrooms: 2,
        bathrooms: 2,
        image: "img/1bdrm_a.jpg"
    },
    { 
        address: "234 52nd St",
        bedrooms: 1,
        bathrooms: 1,
        image: "img/1bdrm_b.jpg"
    },
    { 
        address: "345 63rd St",
        bedrooms: 3,
        bathrooms: 2,
        image: "img/1bdrm_c.jpg"
    }
];
var len=listings.length;
for(var i=0;i<listings.length;i++){
    for(var j=i;j<50;j+=len){
        listings[j]=listings[i];
    }
}
于 2013-04-02T23:14:33.153 に答える
0
while(listings.length <= 50){
    listings[listings.length] = listings[listings.length - 3]
}

このような場合、for ループよりも while ループの方が好きです。

于 2013-04-02T23:09:08.983 に答える