te')); return $arr; } /* 遍历用户所有主题 * @param $uid 用户ID * @param int $page 页数 * @param int $pagesize 每页记录条数 * @param bool $desc 排序方式 TRUE降序 FALSE升序 * @param string $key 返回的数组用那一列的值作为 key * @param array $col 查询哪些列 */ function thread_tid_find_by_uid($uid, $page = 1, $pagesize = 1000, $desc = TRUE, $key = 'tid', $col = array()) { if (empty($uid)) return array(); $orderby = TRUE == $desc ? -1 : 1; $arr = thread_tid__find($cond = array('uid' => $uid), array('tid' => $orderby), $page, $pagesize, $key, $col); return $arr; } // 遍历栏目下tid 支持数组 $fid = array(1,2,3) function thread_tid_find_by_fid($fid, $page = 1, $pagesize = 1000, $desc = TRUE) { if (empty($fid)) return array(); $orderby = TRUE == $desc ? -1 : 1; $arr = thread_tid__find($cond = array('fid' => $fid), array('tid' => $orderby), $page, $pagesize, 'tid', array('tid', 'verify_date')); return $arr; } function thread_tid_delete($tid) { if (empty($tid)) return FALSE; $r = thread_tid__delete(array('tid' => $tid)); return $r; } function thread_tid_count() { $n = thread_tid__count(); return $n; } // 统计用户主题数 大数量下严谨使用非主键统计 function thread_uid_count($uid) { $n = thread_tid__count(array('uid' => $uid)); return $n; } // 统计栏目主题数 大数量下严谨使用非主键统计 function thread_fid_count($fid) { $n = thread_tid__count(array('fid' => $fid)); return $n; } ?>javascript - Loop through array multiple times - Stack Overflow
最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - Loop through array multiple times - Stack Overflow

programmeradmin2浏览0评论

How do I repeat the colors array in order, given an unknown length of items?

const items = [1, 2, ...n]
const colors = ['blue', 'green', 'red']

// return ['blue', 'green', 'red', 'blue', 'green'] where items.length = 5

How do I repeat the colors array in order, given an unknown length of items?

const items = [1, 2, ...n]
const colors = ['blue', 'green', 'red']

// return ['blue', 'green', 'red', 'blue', 'green'] where items.length = 5

Share Improve this question edited Jul 15, 2020 at 20:15 Unmitigated 89.4k12 gold badges93 silver badges103 bronze badges asked Jul 15, 2020 at 20:06 ndemasiendemasie 6101 gold badge7 silver badges17 bronze badges 2
  • 1 What is the significance of the content in items here? You only seem to use its length... – trincot Commented Jul 15, 2020 at 20:09
  • Does this answer your question? Concise way to return a new array of N elements filled with iterated values from another array? Vanilla JavaScript – VLAZ Commented Jul 15, 2020 at 20:13
Add a ment  | 

6 Answers 6

Reset to default 7

const items = [1, 2, 3,4,5,6,7,8]
const colors = ['blue', 'green', 'red']

const result = items.map((_,i) => colors[i%colors.length]);

console.log(result);

You can map over a new array with the length you want and take the modulus of the index by the length of the colors array. You do not seem to need the items array at all.

let len = 5;
const colors = ['blue', 'green', 'red'];
const res = Array(len).fill().map((_,idx)=>colors[idx % colors.length]);
console.log(res);

Array.from can also be used in this case.

let length = 5;
const colors = ['blue', 'green', 'red'];
const res = Array.from({length}, (_,idx)=>colors[idx % colors.length]);
console.log(res);

When the target size is large, you may get better performance by doubling the array over and over again:

function stretch(arr, n) {
  while (arr.length < n) arr = arr.concat(arr);
  return arr.slice(0, n);
}

const items = [1, 2, 3, 4, 5];
const colors = ['blue', 'green', 'red'];

console.log(stretch(colors, items.length));

Create a new array and map the values by using the remainder operator %.

const
    items = [1, 2, 3, 4, 5, 6, 7, 8],
    colors = ['blue', 'green', 'red'],
    result = Array.from(items, (_, i) => colors[i % colors.length]);

console.log(result);

You can take mode for index so you can repeat it.

const items = [1, 2, 3,4,5,6];
const colors = ['blue', 'green', 'red'];

var result=[];
items.forEach(myFunction)

function myFunction(item, index) {
  console.log(colors[(index%colors.length)])
  result.push(colors[(index%colors.length)])
}

Using map()

const  items  = [1, 2, 3, 4, 5, 6, 7, 8],
       colors = ['blue', 'green', 'red'];
output = items.map((_,i) => colors[i % colors.length])
     
console.log(output);

发布评论

评论列表(0)

  1. 暂无评论