2 Stimmen

Für jQuery-Puristen - einfache Array-Füllung?

Ich immer noch für meine eigene Ausbildung wollen eine elegante jQuery-Version eines Konstrukts wie dieses zu sehen - Beachten Sie die Bild-Dateinamen sind 1 basiert und nicht 0 basiert :

var nofImages = 10; // user defined
var slideShowArray = new Array(nofImages); // cannot use [nofImages] of course
for (var i=0, n=slideShowArray.length;i<n;i++) {
  slideShowArray[i]="/images/image"+(i+1)+".jpg";
}

oder vielleicht sollte es gemäß den oben genannten Artikeln lauten

var nofImages = 10; // user defined
var slideShowArray = [];
for (i=nofImages;i>0;i--) {
  slideShowArray[(i-1)]="/images/image"+i+".jpg";
}

Danke

4voto

Tgr Punkte 26333
var slideShowArray = $.map(new Array(10), function(i,j) {
    return '/images/image'+(j+1)+'.jpg';
});

In Javascript 1.8 werden Sie dies eleganter tun können:

var slideShowArray = $.map(new Array(10), function(i,j) '/images/image'+(j+1)+'.jpg');

oder sogar

$.range = function(first,last,step) {
    step = step || 1;
    if (typeof last == undefined) {
        last = first;
        first = 0;
    }
    return $.map(Array((first-last)/step), function(i,j) {
        return j*step + first;
    });
}

var slideShowArray = ['/images/image'+i+'.jpg' for (i in $.range(1,10))];

2voto

sje397 Punkte 40297

Wenn Sie versuchen, ein Jquery-Purist zu sein, sollten Sie vielleicht die .map() Methode.

var noOfImages = 10;
var slideShowArray = [];
slideShowArray[noOfImages - 1] = ""; // set initial size
slideShowArray = $.map(slideShowArray, function(element, index) {
  return "/images/image"+index+".jpg"
});

Aber ich denke, das wäre einfacher:

var noOfImages = 10;
var slideShowArray = [];
for(var i = 0; i < noOfImages; i++) 
  slideShowArray.push("/images/image"+i+".jpg");

(Beachten Sie, dass Ihre Beispiele ein wenig fehlerhaft sind - das Array auf [noOfImages] setzt die Länge auf 1).

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X