Mi pregunta es bastante extraña porque es para OfficeScripts. Estoy bastante seguro de que está basado en Javascript porque eso es lo que he estado escribiendo. Ahora mi pregunta. Tengo una matriz de matrices que estoy recorriendo hacia atrás para eliminar algunos elementos. básicamente, recopilé datos de fila de una tabla y luego los usé para filtrar otras tablas, y luego construí una matriz de una matriz usando ambos datos. luciendo algo como esto:
const Data = [["Name", "Area", "Position", "Shift"]]; const otherData = [["Training A","Course A","Level","Curricula"],["Training B","Course B","Level","Curricula"],["Training C","Course C","Level","Curricula"]]; var CombinedData = otherData.map(x=>[...Data[0], ...x]); console.log(CombinedData);Lo que busco lograr es eliminar la "Posición" de cada matriz en la matriz de matrices CombinedData. En este momento estoy escribiendo esto y está vaciando mi matriz:
const Data = [["Name", "Area", "Position", "Shift"]]; const otherData = [["Training A","Course A","Level","Curricula"],["Training B","Course B","Level","Curricula"],["Training C","Course C","Level","Curricula"]]; var CombinedData = otherData.map(x=>[...Data[0], ...x]); console.log(CombinedData); for(let i = CombinedData.length -1; i>=0; i--){ if(CombinedData[i][2] == Data[0][2]){ CombinedData[i].splice(i,1); } } console.log(CombinedData); CombinedData= [["Name", "Area", "Shift","Training A","Course A","Level","Curricula"],["Name", "Area", "Shift","Training B","Course B","Level","Curricula"],["Name", "Area", "Shift","Training C","Course C","Level","Curricula"]];Lo cual obviamente no está funcionando. ¿Alguna idea sobre lo que tengo que hacer? JavaScript no es mi lenguaje más fuerte y soy completamente nuevo en OfficeScripts. Agradezco cualquier ayuda.
El problema es con splice(i, 1) , esto debería ser splice(2, 1) ya que necesita eliminar el elemento 2 (indexado).
const Data = [["Name", "Area", "Position", "Shift",]]; const otherData = [["Training A","Course A","Level","Curricula"],["Training B","Course B","Level","Curricula"],["Training C","Course C","Level","Curricula"]]; var CombinedData = otherData.map(x=>[...Data[0], ...x]); for(let i = CombinedData.length -1; i>=0; i--){ if(CombinedData[i][2] == Data[0][2]){ CombinedData[i].splice(2,1); } } console.log(CombinedData);Dado que solo usa el elemento 0 de Data , solo filtre eso una vez y utilícelo en su combinación:
const Data = [["Name", "Area", "Position", "Shift",]]; const otherData = [["Training A","Course A","Level","Curricula"],["Training B","Course B","Level","Curricula"],["Training C","Course C","Level","Curricula"]]; var elem0 = Data[0].filter( y => y != "Position" ) var CombinedData = otherData.map(x=>[...elem0, ...x]); console.log(CombinedData);