如何获取引用内部值的指定对象(javascript)

How to get a specified object reffering to a value inside (javascript)

本文关键字:对象 javascript 引用 何获取 获取 内部      更新时间:2023-09-26

我需要使用来自同一实例的另一个属性对象的一些值来设置一个 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)如果是,那么我动态地尝试创建一个轮播,其中包含6070幻灯片。不能有幻灯片可以播放或超过两个。这不取决于我。下面的代码部分应该可以解决问题

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

_this.slides[slideId]_this.slides[60]是一样的,实际上我需要_this.slides[1]

如何获取上述$.each()函数中包含slide_id: 60的对象?

提前感谢!

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()

如果你的意思是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: {},
}

为了获取内部信息,您可以使用javascript Array.indexOf(content)方法。

祝你好运。