Звучит так, как будто вы хотите копий массивов, а не ссылок на один и тот же массив.Вы можете смешать map
и [...]
или slice()
, чтобы добавить копию, а не просто ссылку на элемент в новый массив:
let something = [['a', 'b'], ['c', 'd'], ['e', 'f']]
let newArray = something.map(item => [...item]) // copy of each array
console.log(newArray)
// not the same references
console.log(newArray[0] === something[0])
РЕДАКТИРОВАТЬ:
Если something
является итератором, а не массивом, вы все равно можете сделать почти то же самое, просто используя цикл for:
// Some iterator from a library //
let arr = [['a', 'b'], ['c', 'd'], ['e', 'f']]
function* gen() {
yield* arr
}
let something = gen()
/////////////////////////////
// Array.from can iterate the iteraor
let newArray = Array.from(something, (data) => [...data])
console.log(newArray)
console.log(newArray[0] === arr[0])
Редактировать II:
Это прекрасно работает для меня (в основном то же, что и выше):
// var G = require('generatorics'); // loading with script
var newArray = Array.from(G.permutation(['a', 'b']), (data) => [...data]);
console.log(newArray)
<script src="https://cdn.jsdelivr.net/npm/generatorics@1.1.0/generatorics.js"></script>