0

同じインスタンスの別のプロパティ オブジェクトの値を使用して JavaScript プロパティ オブジェクトを設定する必要があります。実際、私は以下のオブジェクトを持っています:

var PLAYER = {
slides: {
{ slide_id: 60, slide_content: 'content for slide 1', type: 'slide' },
{ slide_id: 65, slide_content: 'content for slide 2', type: 'slide' },
{ slide_id: 70, slide_content: 'content for slide 3', type: 'slide' },
{ qId: 4, question: 'question text', after_slide: 70, type: 'question' },
{ slide_id: 74, slide_content: 'content for slide 5', type: 'slide' }
},
currentSlide: 0,
container: false,
currentCarouselSlide: 0,
carousel: {},
}

今、私は次のような配列を持っています:

var carouselRandomSlides = [60,70];

オブジェクトの後半で、PLAYERこのようにスライドをフィートチングする関数があります

<script>
    fetchSlide: function(index,increment) {
    var _this = this;
    $.post('/player/fetchSlide', { slideContent: _this.slides[index] }, function(response){
            increment ? (increment == 'increase' ? _this.currentSlide++ : _this.currentSlide--) : null; 
    $(_this.container).html(response);
    if (_this.slides[index].qId) {
    this.questions.correctAnswer = _this.slides[index].correct_answer;
    $.each(_this.slides[index].carousel, function(i,slideId) {
    _this.carousel[++i] = _this.slides[slideId];
    });
    } 
    else {
    _this.questions.correctAnswer = false;
    _this.carousel = {};
    } 
    console.log(_this.carousel);
    });     
    },
</script>

この関数では、現在のスライドが質問であるかどうかをテストしています。質問である場合は、スライドとif (_this.slides[index].qId)を含むカルーセルを動的に作成しようとします。再生するスライドがないか、2 つ以上ある場合があります。これは私次第ではありません。以下のコード部分でうまくいくはずです6070

$.each(_this.slides[index].carousel, function(i,slideId) {
    _this.carousel[++i] = _this.slides[slideId];
});

しかし、実際には私が必要と_this.slides[slideId]するのと同じです_this.slides[60]_this.slides[1]

slide_id: 60上記の$.each()関数に含まれるオブジェクトを取得するにはどうすればよいですか?

前もって感謝します!

4

2 に答える 2

0
var PLAYER = {
   slides: [
      { slide_id: 60, slide_content: 'content for slide 1', type: 'slide' },
      { slide_id: 65, slide_content: 'content for slide 2', type: 'slide' },
      { slide_id: 70, slide_content: 'content for slide 3', type: 'slide' },
      { qId: 4, question: 'question text', after_slide: 70, type: 'question' },
      { slide_id: 74, slide_content: 'content for slide 5', type: 'slide' }
   ]

PLAYER.slides配列でなければなりません。

$.grep()その後、正しいアイテムを取得するために使用できます。

function getSlideById(id){
  return $.grep(PLAYER.slides, function(el,i){
    return el.slide_id === id;
  })[0]; // returns array so first item [0]
}

についてもっと読む$.grep()

于 2013-11-09T12:55:52.753 に答える
0

あなたが意味するならPlayer.slides、おそらく配列で作業したいと思うでしょう。このようなもの:

注: この JavaScript コードはそのままでは機能しないため、変更する必要があります。

var PLAYER = {
  slides: {
    [ slide_id: 60, slide_content: 'content for slide 1', type: 'slide' ],
    [ slide_id: 65, slide_content: 'content for slide 2', type: 'slide' ],
    [ slide_id: 70, slide_content: 'content for slide 3', type: 'slide' ],
    [ qId: 4, question: 'question text', after_slide: 70, type: 'question' ],
    [ slide_id: 74, slide_content: 'content for slide 5', type: 'slide' ]
  },
  currentSlide: 0,
  container: false,
  currentCarouselSlide: 0,
  carousel: {},
}

Array.indexOf(content)内部を取得するには、javascriptメソッドを使用できます。

幸運を。

于 2013-11-09T12:58:14.690 に答える