function assignMap( x, indices, mode, out, stride, offset, clbk ) {
	var xo;
	var io;
	var oo;

	xo = arraylike2object( x );
	io = arraylike2object( indices );
	oo = arraylike2object( out );
	if (
		xo.accessorProtocol ||
		io.accessorProtocol ||
		oo.accessorProtocol
	) {
		// Note: we only explicitly support complex-to-complex, as this function should not be concerned with casting rules, etc. That is left to userland...
		if (
			isComplexDataType( xo.dtype ) &&
			isComplexDataType( oo.dtype )
		) {
			complexMap( reinterpret( x, 0 ), io, mode, reinterpret( out, 0 ), stride, offset, clbk ); // eslint-disable-line max-len
			return out;
		}
		accessorsMap( xo, io, mode, oo, stride, offset, clbk );
		return out;
	}
	takeMapIndexed( x, indices, mode, out, stride, offset, clbk );
	return out;
}
Takes elements from an array and assigns the values to elements in a provided output array.

@param {Collection} x - input array.
@param {IntegerArray} indices - list of indices.
@param {string} mode - index mode.
@param {Collection} out - output array.
@param {integer} stride - output array stride.
@param {NonNegativeInteger} offset - output array offset.
@param {Function} clbk - callback function applied to each selected element.
@returns {Collection} output array.

@example
var x = [ 1, 2, 3, 4 ];
var indices = [ 3, 1, 2, 0 ];

var out = [ 0, 0, 0, 0 ];

function clbk( val ){
	return val;
}
var arr = assignMap( x, indices, 'throw', out, 1, 0, clbk );
// arr is [ 4, 2, 3, 1 ]

var bool = ( arr === out );
// bool is true