Javascript 从阵列中丢失数据
我正在从一个数组中切片3个元素,并将它们存储到另一个数组中Javascript 从阵列中丢失数据,javascript,arrays,Javascript,Arrays,我正在从一个数组中切片3个元素,并将它们存储到另一个数组中 array = [1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1]; rows = 3; 这是我的方法 getVertWallStruct = (array, rows) => { let i = 1, storageArr = [], data = []; for (let k = 0; k < rows*2; k
array = [1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1];
rows = 3;
这是我的方法
getVertWallStruct = (array, rows) => {
let i = 1,
storageArr = [],
data = [];
for (let k = 0; k < rows*2; k++) { // everything's ok here
storageArr.push(array.slice(k*rows, (k+1)*rows));
}
data = storageArr;
console.log("storageArr - ", storageArr, " , array - ", array, " , data - ", data);
return data;
}
为什么我会失去价值
更新:
即使我从其中一个答案复制粘贴的代码,方法也会返回空的数据。为什么?
代码如下所示:
getVertWallStruct = (array, rows) => {
console.log(array, rows); //okay here
let iterator = array.values()
let out = []
for (let i = 0;i < ~~(array.length / rows); i++){
out.push([iterator.next().value, iterator.next().value, iterator.next().value])
}
console.log(out); //empty ???
return out;
}
getVertWallStruct=(数组,行)=>{
console.log(数组,行);//这里可以
让迭代器=array.values()
放出=[]
对于(设i=0;i<~~(array.length/行);i++){
out.push([iterator.next().value,iterator.next().value,iterator.next().value])
}
console.log(out);//空???
返回;
}
一种可能的方法是使用数组迭代器: 方法返回一个新的数组迭代器对象,该对象包含 数组中每个索引的值。 常量数组=[1,1,1,0,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1] 让迭代器=array.values() 放出=[] 对于(设i=0;i<~~(array.length/3);i++){ out.push([iterator.next().value,iterator.next().value,iterator.next().value]) }
console.log(out)每次索引可被行数整除时,使用reduce,将空白数组推入累加器。将当前项推入累加器中的最后一个数组 常量数组=[1,1,1,0,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1]; const rowify=(数组,行)=>array.reduce((结果,当前,索引)=>{ 如果(索引%rows==0){ 结果:push([]); } 结果[results.length-1]。推送(当前); 返回结果; }, []);
log(rowify(array,3))
arr=array
在这里毫无意义。只需重新命名参数。同样地,data=storageArr
。直接返回storageArr
。请记住,在JavaScript中,对象不会复制对象,这意味着x
和y
指的是同一个对象。为什么将它们分组为3块时k
?应该是k
?或者您打算使用pairs但得到三元组?它是空的,因为您从未直接接触过它,您将它声明为空数组,然后抛出该空数组,并将其作为storageArr
的别名。你能解释一下代码在当前的形式下做了什么,以及它是如何不正确的吗?现在还不清楚你所说的“失去价值”是什么意思。@LirysJH你到底想实现什么?为什么i你是对的,我在使用问题仍然存在。方法返回空数据
getVertWallStruct = (array, rows) => {
console.log(array, rows); //okay here
let iterator = array.values()
let out = []
for (let i = 0;i < ~~(array.length / rows); i++){
out.push([iterator.next().value, iterator.next().value, iterator.next().value])
}
console.log(out); //empty ???
return out;
}