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