Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
接口的Node.js数组未正确填充_Node.js_Typescript - Fatal编程技术网

接口的Node.js数组未正确填充

接口的Node.js数组未正确填充,node.js,typescript,Node.js,Typescript,我试图将4个文件读入一个对象数组。但是,数组中的对象值都是最后一个对象。我想知道我对这种行为做了什么错事 代码(代码已简化,因此可能没有什么意义): 日志中的结果: Reading file: /Users/autorun/Documents/Projects/Axway/Projects/axDeploy/data/rtczip/PD_only/PD.DEVOPS.TEST.1.FS.json Setting up axObj [1] Data file is valid with size:

我试图将4个文件读入一个对象数组。但是,数组中的对象值都是最后一个对象。我想知道我对这种行为做了什么错事

代码(代码已简化,因此可能没有什么意义):

日志中的结果:

Reading file: /Users/autorun/Documents/Projects/Axway/Projects/axDeploy/data/rtczip/PD_only/PD.DEVOPS.TEST.1.FS.json
Setting up axObj [1]
Data file is valid with size: [754]  file: [PD.DEVOPS.TEST.1.FS.json]

Reading file: /Users/autorun/Documents/Projects/Axway/Projects/axDeploy/data/rtczip/PD_only/PD.DEVOPS.TEST.1.SFTP.json
Setting up axObj [2]
Data file is valid with size: [1625]  file: [PD.DEVOPS.TEST.1.SFTP.json]

Reading file: /Users/autorun/Documents/Projects/Axway/Projects/axDeploy/data/rtczip/PD_only/PD.DEVOPS.TEST.1.json
Setting up axObj [3]
Data file is valid with size: [1507]  file: [PD.DEVOPS.TEST.1.json]

Reading file: /Users/autorun/Documents/Projects/Axway/Projects/axDeploy/data/rtczip/PD_only/PD.DEVOPS.TEST.1_AS2.json
Setting up axObj [4]
Data file is valid with size: [874]  file: [PD.DEVOPS.TEST.1_AS2.json]


Checking pdObjArray Content
axSeqCall index: [1] name: [PD.DEVOPS.TEST.1_AS2.json]
axSeqCall index: [2] name: [PD.DEVOPS.TEST.1_AS2.json]
axSeqCall index: [3] name: [PD.DEVOPS.TEST.1_AS2.json]
axSeqCall index: [4] name: [PD.DEVOPS.TEST.1_AS2.json]
问题:

在“检查PDOBjarary内容”中,我不希望所有的文件名都是[PD.DEVOPS.TEST.1.AS2.json],我希望所有4个不同的文件名,比如“PD.DEVOPS.TEST.1.FS.json”、“PD.DEVOPS.TEST.1.SFTP.json”、“PD.DEVOPS.TEST.1.json”、“PD.DEVOPS.TEST.1.json”、“PD.DEVOPS.TEST.1_AS2.json”

请帮忙

for (var file of files) {
    var pdObj: axObj = {
        id: "",
        name: "PD.Object",
        body: ""
    };

...
}
请在
for
循环中声明变量
pdObj

为什么?:
如果
pdObj
外部
for
循环

pdObj = ...
pdObjArray.push(pdObj);
上述代码表示:将相同的参考变量
pdOjb
附加到
pdObjArray

因此,
pdObjArray
包含相同的引用数组
这意味着仅显示最后一个值

但是,如果
pdObj
内部
for
循环,则每个
for循环
都会创建
pdObj
,因此,不同的引用对象会附加到
pdObjArray


或者您可以在PDOBJARRY.push(pdObj)之前使用对象克隆;
pdObjArray.push(JSON.parese(JSON.stringfy(pdObj));

请在
for
循环中声明变量
pdObj

为什么?:
如果
pdObj
外部
for
循环

pdObj = ...
pdObjArray.push(pdObj);
上述代码表示:将相同的参考变量
pdOjb
附加到
pdObjArray

因此,
pdObjArray
包含相同的引用数组
这意味着仅显示最后一个值

但是,如果
pdObj
内部
for
循环,则每个
for循环
都会创建
pdObj
,因此,不同的引用对象会附加到
pdObjArray


或者您可以在PDOBJARRY.push(pdObj)之前使用对象克隆;
pdObjArray.push(JSON.parese(JSON.stringfy(pdObj));

用于(文件的常量文件)
用于(文件的let文件)

如果必须在异步调用中访问
文件
,则不能在
for
循环中使用
var
关键字。它不会捕获
文件
的确切值

请尝试更改
dojobseqcall
函数中第一个
for
循环中的
var
,然后重试。

for(const file of files)
for(let file of files)

如果必须在异步调用中访问
文件
,则不能在
for
循环中使用
var
关键字。它不会捕获
文件
的确切值


请尝试更改
dojobseqcall
函数中第一个
for
循环中的
var
,然后重试。

由于
文件
是字符串数组,您可以尝试执行
foreach
,然后执行其中的所有逻辑。

files.forEach(文件=>{
//这里的逻辑
})

查看Mozilla网站上的示例
由于
文件
是一个字符串数组,您可以尝试执行
foreach
,然后执行其中的所有逻辑。

files.forEach(文件=>{
//这里的逻辑
})

查看Mozilla网站上的示例

谢谢King。在我将var pdObj移到for循环内后,代码就可以工作了。请您解释一下DFFIRENCE,以及如果我将var声明在for循环外,它为什么不工作?感谢您的帮助。非常感谢King。谢谢King。在我将var pdObj移到for循环内后,代码就可以工作了。请您解释一下DFFIRENCE和如果我在for循环外声明var为什么不起作用?感谢您的帮助。非常感谢King。谢谢Rannie。在for循环中将“var”更改为“let”后,即for(let file of files),它就起作用了。请您详细说明为什么“var”不起作用?谢谢Rannie。在for循环中将“var”更改为“let”后,即for(让文件的文件),它是有效的。你能详细说明为什么“var”不起作用吗?如果你在使用Typescript,我强烈建议你开始使用
let
const
并避免
var
。如果你在使用Typescript,我强烈建议你开始使用
let
const
并避免
var