melkaya94
@melkaya94

Как правильно упростить код?

const obj = {
			inHistory: [1,6,8,10],
			inBook:[7,8,9,10,12]};

function _intersection(src) {
	let inHistory = []; //массив для колонки1
	let inBook = [];//массив для колонки2
	let inHistoryOrig = [...src.inHistory];
	let inBookOrig = [...src.inBook];
	const crossing = intersection(inHistoryOrig,inBookOrig); //массив пересекающихся объектов

	for(let i = 0; i < crossing.length; i++){
		let index1 = findIndex(inHistoryOrig, function(el){return el === crossing[i];}); //индекс элементов из пересеченного массива [2] , [3]
		let _take = take(inHistoryOrig, index1); //массив элементов до пересеченных [1,6] , [1,6,8]
		inHistoryOrig = drop(inHistoryOrig, index1); //выкидываем из начального массива элементы [1,6]; [1,6,8]
		inHistory.push(_take); //добавляет в массив inHistory  элементы, в inHistory [[1,6]]; [[ 1, 6], [1, 6, 8]]

		let index2 = findIndex(inBookOrig, function(el){return el === crossing[i];});
		let _take2 = take(inBookOrig, index2);
		inBookOrig = drop(inBookOrig,index2);
		inBook.push(_take2);
		}

	inHistory.push(inHistoryOrig);
	inBook.push(inBookOrig);
	return {
		inHistory: inHistory,
		inBook: inBook,
	};
}

console.log(_intersection(obj));
//{ inHistory: [ [ 1, 6 ], [ 8 ], [ 10 ] ],
 // inBook: [ [ 7 ], [ 8, 9 ], [ 10, 12 ] ] }
  • Вопрос задан
  • 156 просмотров
Пригласить эксперта
Ответы на вопрос 1
KorniloFF
@KorniloFF Куратор тега JavaScript
Работаю по font-end / JS
Тоже не понял всю глубину глубин, но отвечу на конкретный вопрос из комментов топика:
Demian Smith, _intersection выводить массив из элементов, которые одинаковы для начальных массивов. в моем случае для [1,6,8,10] и [7,8,9,10,12] _intersection выведет [8,10]

var a = [1,6,8,10], b = [7,8,9,10,12];
function _intersection (a,b) {
	return a.filter(function(obj) { return b.indexOf(obj) >= 0; });
	
}
console.log(_intersection (a,b));
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы