我有一个名为“$inputFieldsArray”的输入字段数组,然后我将它们按 3 分组为“newArray”,然后我需要为每个项目分配新的数组值以分配给另一个数组,因为最后我需要一个带有以下内容的数组:输入字段值按 3 分组。最终目标是获取一个包含 9 个输入字段的数组,例如 [[i1,i2,i3],[i4,i5,i6],[i7,i8,i9]]。
由于某种原因,“stringArray”输出什么也没有,前两个数组打印正确的结果。这可能是我在 JS 数组方面犯的一些错误。抱歉 js 不是我的主要语言,我尝试学习它。谢谢。
这是我的功能:
$($submitButton).click(function () {
// Get number of input fields
let $total = $("input[name^='bodyHeader']").length;
// Get input fields as objects
let $inputFieldsArray = $("input[name^='bodyHeader']");
let newArray = [];
let stringArray = [];
let j = 0;
// Group input fields by 3
for (let i = 0; i < $total - 1; i += 3) {
newArray[j] = $inputFieldsArray.slice(i, i + 3);
j++;
}
// Extract string values from newArray and pass them into stringArray
for (let k = 0; k < newArray.length - 1; k++) {
stringArray[k][0] = newArray[k][0].value;
stringArray[k][1] = newArray[k][1].value;
stringArray[k][2] = newArray[k][2].value;
}
// Print to test results
console.log($inputFieldsArray);
console.log(newArray);
console.log("String Array: " + stringArray);
... // Function logic is not complete
});
解决方案:
js中没有办法声明动态长度二维数组。使用@Stephan 建议的这种方法:
stringArray[k] = [newArray[k][0].value, newArray[k][1].value,
newArray[k[2].value];
或者@Lorenzo Gangi建议的这种方法:
var matrix = [],
cols = 3;
//init the grid matrix
for ( var i = 0; i < cols; i++ ) {
matrix[i] = [];
}
最佳答案
stringArray[k]
未定义,因为您将 stringArray 定义为 []
(您的浏览器可能引发异常)。另外 newArray[k]
从索引 0 开始。
您可以改为编写 stringArray[k] = [newArray[k][0].value, newArray[k][1].value, newArray[k][2].value]
.
关于javascript - 将数组值传递给另一个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45119594/