Logo

Programming-Idioms

Iterate alternatively over the elements of the lists items1 and items2. For each iteration, print the element.

Explain what happens if items1 and items2 have different size.
Implementation
JS

Implementation edit is for fixing errors and enhancing with metadata. Please do not replace the code below with a different implementation.

Instead of changing the code of the snippet, consider creating another JS implementation.

Be concise.

Be useful.

All contributions dictatorially edited by webmasters to match personal tastes.

Please do not paste any copyright violating material.

Please try to avoid dependencies to third-party libraries and frameworks.

Other implementations
import std.range;
import std.algorithm.iteration;
import std.stdio;
roundRobin(items1, items2).each!writeln;
items1.zip(items2){|pair| puts pair}
for i := 0; i < len(items1) || i < len(items2); i++ {
	if i < len(items1) {
		fmt.Println(items1[i])
	}
	if i < len(items2) {
		fmt.Println(items2[i])
	}
}
(map (lambda (x)
       (display x)
       (newline))
     (foldr append '()
            (map list items1 items2)))
interweave :: [a] -> [a] -> [a]   -- optional signature
interweave [] ys = ys
interweave xs [] = xs
interweave (x:xs) (y:ys) = x : y : interweave xs ys

main = mapM_ print $ interweave items1 items2
for pair in zip(item1, item2): print(pair)
extern crate itertools;
for pair in izip!(&items1, &items2) {
    println!("{}", pair.0);
    println!("{}", pair.1);
}
uses Math;
for i := 0 to Min(items1.Count-1,items2.Count-1) do 
  writeln(items1[i],', ',items2[i]);
do i=1, min(size(items1), size(items2))
  print *,items1(i), items2(i)
end do
use List::SomeUtils qw(zip);
print for zip @items1, @items2;
using System.Collections.Generic;
using System.Math;
for(int i = 0; i < Math.Max(items1.Count, items2.Count); i++)
{
  if (i < items1.Count) Console.WriteLine(items1[i]);
  if (i < items2.Count) Console.WriteLine(items2[i]);
}
import java.util.Iterator;
Iterator<String> iter1 = items1.iterator();
Iterator<String> iter2 = items2.iterator();
while (iter1.hasNext() || iter2.hasNext()) {
	if (iter1.hasNext()) {
		System.out.println(iter1.next());
	}
	if (iter2.hasNext()) {
		System.out.println(iter2.next());
	}
}
import java.util.stream.IntStream;
import java.util.stream.Stream;
IntStream.range(0, Math.max(items1.size(), items2.size()))
	.boxed()
	.flatMap(idx -> Stream.of(
		items1.size() > idx ? items1.get(idx) : null,
		items2.size() > idx ? items2.get(idx) : null
	))
	.filter(Objects::nonNull)
	.forEach(System.out::println);
# php 5.3+
print array_reduce( array_map( null, $items1, $items2 ), function($c,$d){return $c.($c?"\n":'').implode("\n", $d); }, "")."\n" ;

#php 5.6+
print implode("\n", array_merge( ...array_map( null, $items1, $items2 )))."\n";
(doseq [i (interleave items1 items2)]
  (println i))
items1 with: items2 do: [:item1 :item2 |
  Transcript 
	showln: item1;
	showln: item2].
stream1 := items1 readStream.
stream2 := items2 readStream.
[stream1 atEnd ifFalse: [Transcript showln: stream1 next].
 stream2 atEnd ifFalse: [Transcript showln: stream2 next]]
	doWhileFalse: [stream1 atEnd or: [stream2 atEnd]].
const iterator1 = items1[Symbol.iterator]()
const iterator2 = items2[Symbol.iterator]()

let result1 = iterator1.next()
let result2 = iterator2.next()

while(!(result1.done && result2.done)) {
  if (!result1.done) {
    console.log(result1.value)
    result1 = iterator1.next()
  }
  if (!result2.done) {
    console.log(result2.value)
    result2 = iterator2.next()
  }
}
mapM_ print . concat 
	$ zipWith (\a b -> [a,b]) items1 items2
import java.util.ArrayList;
int index = 0;
String value1 = null;
String value2 = null;
while(index < items1.size() && index < items2.size()) {
	if(index < items1.size()) {
		value1 = items1.get(index);
	}
	if(index < items2.size()) {
		value2 = items2.get(index);
	}
	System.out.printf("%s, %s%n", value1, value2);
	index++;
}
import "fmt"
for i := range min(len(items1), len(items2)) {
	fmt.Println(items1[i])
	fmt.Println(items2[i])

}