mi matriz:
var arr= ["1", "2", "3","4","5", "6", "7","8","9","10","11"];quiero .slice() para que la salida sea:
var finalArr = [ "1", "2", "4", "5", "6","9","10","11"];Utilicé rodajas así, pero ¿cómo puedo .slice() el segundo elemento de mi matriz?
var b = [].concat(arr.slice(0, 6), arr.slice(-3)); // output: ["1", "2", "3", "4", "5", "6", "9", "10", "11"]sé sobre .splice() pero esa solución no funciona para mi proyecto
Puede usar el operador de propagación ES6:
const result = [arr[0], ...arr.slice(2)]; O incluso puede usar Array.prototype.filter así, pero tenga cuidado con el rendimiento si tiene una matriz de fuentes grande:
const result = arr.filter((_, index) => index !== 1);Supongo que es una cuestión del valor 'final' correcto en el corte .
const initial = ["1", "2", "3","4", "5", "6", "7", "8", "9", "10", "11"]; const finalArr = [ "1", "2", "4", "5", "6", "9", "10", "11"]; // concat the slices const concatted = initial.slice(0, 2) .concat(initial.slice(3, 6)) .concat(initial.slice(-3)); // or use the spread operator ... const spreaded = [ ...initial.slice(0, 2), ...initial.slice(3, 6), ...initial.slice(-3) ]; // or flat three sliced subarrays const flattened = [ initial.slice(0, 2), initial.slice(3, 6), initial.slice(-3) ].flat(); // or filter all values NOT in finalArr const notInFinalArray = initial.filter(v => !finalArr.find(fa => fa === v)); const filtered = initial.filter( v => !notInFinalArray.includes(v) ); console.log(`concatted ${JSON.stringify(concatted)} equals finalArr? ${ JSON.stringify(concatted) === JSON.stringify(finalArr)}`); console.log(`spreaded ${JSON.stringify(spreaded)} equals finalArr? ${ JSON.stringify(spreaded) === JSON.stringify(finalArr)}`); console.log(`flattened ${JSON.stringify(flattened)} equals finalArr? ${ JSON.stringify(flattened) === JSON.stringify(finalArr)}`); console.log(`filtered ${JSON.stringify(filtered)} equals finalArr? ${ JSON.stringify(filtered) === JSON.stringify(finalArr)}`);En su caso, puede usar "push" en lugar de concat, es más eficaz:
const arr = ["1", "2", "3","4", "5", "6", "7", "8", "9", "10", "11"]; // concat the slices var finalArr = arr.slice(0, 2); finalArr.push(...arr.slice(3, 6),...arr.slice(-3)); console.log(`${JSON.stringify(finalArr)}`);