Node
配列のインデックス順序は保証されません。詳細については、この質問を参照してください: Nodejs プロパティの順序保証
強調して指摘したように、上記の私の発言は正しくありません。オブジェクトを JSON に変換し、それをリクエストのペイロードとして送信したことがある場合は、オブジェクトのプロパティの順序を中継してはならないというのが正しいステートメントです。JSON.stringify()
私の元のステートメントは明らかに正しくありませんが、これは私自身が遭遇した問題であり、サーバー上で配列値が間違った順序で表示され、以下の図のように解決しました。上記のコメントでのアミットの提案が問題の原因である可能性があります。具体的には、最初は期待どおりの順序でファイルを入力していないのは、クライアント側の JavaScript です。
原因が何であれ、クライアント側で「人工的な」インデックスを各ファイルに追加し、それらをオブジェクトの配列として渡す必要があります。
したがって、これの代わりに:
var files = ['file1.jpg','file2.jpg','file3.jpg'];
次のようにオブジェクトをバックエンドに渡す必要があります。
var files = [
{ index : 0, file : 'file1.jpg' },
{ index : 1, file : 'file2.jpg' },
{ index : 2, file : 'file3.jpg' },
];
そして、オブジェクトの配列をバックエンド インスタンスが受け取ったら、次のように並べ替える必要があります。
files.sort(function(a, b) {
return a.index - b.index;
});
そして、files
配列をループして、あなたが望むことをすることができます:
var justFiles = [];
async.each(files, function(file, iterate){
justFiles.push(file.file);
return iterate();
}, function(result){
console.log(justFiles);
});
出力は次のようになります。
'file1.jpg','file2.jpg','file3.jpg'