我有2个数组(长度相同),我想将内容写到txt文件中,并保持元素的顺序。 像这样:
let array1 = [1, 2, 3];
let array2 = [a, b, c];
for (id in array1) {
fs.appendFile(`./saved_items/output.txt`,
`${id}: ${array1[id] + numOfCredits[id]}\r\n`,
function (err) {
if (err) {
console.log(err);
}
});
}
所以输出应该是这样:
0: 1a
1: 2b
2: 3c
但是,我得到了以下输出:
1: 2b
2: 3c
0: 1a
那是为什么,我如何写入文件并保持元素的顺序?
答案 0 :(得分:2)
由于appendFile
是一个异步函数,因此您的代码可以按其他顺序写入数据,然后再调用它,因此应使用链式调用或使用appendFileSync
函数的同步版本。
答案 1 :(得分:2)
建议替代方案:
为什么不首先循环执行appendFile
,而是为什么不先构建要写入的数据,然后执行一次appendFile
:
let array1 = [1, 2, 3];
let array2 = [a, b, c];
let data = '';
array1.forEach((el, idx) => {
data += `${el}: ${el + array2[idx]}\r\n`;
});
fs.appendFile(`./saved_items/output.txt`, data, function (err) {
if (err) {
console.log(err);
}
})
答案 2 :(得分:1)
您可以尝试forEach并不要使用for..in进行迭代和数组化。还可以使用tblProduct.Product_Name
从第二个数组中检索元素
index