映射2个阵列之间的位置

时间:2015-01-12 21:07:05

标签: javascript arrays math

这是一个相对简单的问题,尽管这对我来说很难确定。

我有两个填充页面的数组。一个有页面,一个有页面和广告。

pages = ['page1','page2','page3','page4','page5','page6','page7','page8','page9']

pages_w_ads = ['page1','page2', 'ad','page3','page4','ad','page5','page6','ad','page7','page8','ad','page9']

我需要根据页面数组中的位置获取pages_w_ads数组中网页的数组位置,不包括广告。广告会显示pages_w_ads数组中的每2个项目。

示例:pages[8] === pages_w_ads[11];

如何在pages_w_ads数组中找到我的页面的位置?

这是我当前实现的基本js小提琴: http://jsfiddle.net/myyellowshoe/qsL6uyw2/2/

感谢您的任何智慧。

3 个答案:

答案 0 :(得分:1)

  

示例:pages[8] === pages_w_ads[11];

那不是真的。数组的第一个元素位于键0中,所以

pages[8] === pages_w_ads[12]; // "page9"

因此,平等是

pages[i] === pages_w_ads[Math.floor(i*1.5)]; // "page" + (i+1)

答案 1 :(得分:0)

这有两个问题:一个是处理广告页面,另一个是页面实际上并不像Javascript数组那样基于0。

var getPage = function (n) {
  return pages_w_ads[(n - 1) + Math.floor(n/3)];
}
console.log(getPage(1)); //Returns page1
console.log(getPage(2)); //Returns page2
console.log(getPage(3)); //Returns page3
console.log(getPage(4)); //Returns page4

答案 2 :(得分:0)

只需使用带有id的indexOf()数组函数,你可以使用common" page"名称

Ex: return pages_w_ads[pages_w_ads.indexOf("page"+pid)]