問題タブ [array-reduce]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1114 参照

javascript - Javascript、Promises を使用して Array.reduce 内に複数のファイルをアップロードする方法は?

Javascriptから進化し、大きなファイル用の FileReader を Promises に接続しました。どのように? Promise がどのように関数を解決できるかを示しましたが、今は同じですが Array.reduce 関数内で立ち往生しています。

目標は、各配列アイテム (ファイル) が順番にアップロードされる (つまり、promise によって制御される) 配列内にファイルをアップロードすることです (既に実行しています)。

次に、答えがhttp://www.html5rocks.com/en/tutorials/es6/promises/?redirect_from_locale=esにあることは理解していますが、それをここに適用する方法がわかりません。私の配列は約束の配列ではなく、ファイルの配列です。まあ、全体はまだ難読化されています。

これは私のコードで、einconsole.log メッセージが表示される場合に機能します。

  • いくつかのコメントの後に更新されましたが、今では機能しているようです...まだわかりません

    var uploading_file、start、temp_end、end、content; var BYTES_PER_CHUNK = 100000;

    myArray.reduce(function(previous, current) { return previous .then(function() { BYTES_PER_CHUNK = 100000; start = 0; temp_end = start + BYTES_PER_CHUNK; end = parseInt(current.size); if (temp_end > end) temp_end = 終了; コンテンツ = ''; uploading_file = 現在;

    }); },Promise.resolve()) .then(function(){ console.log('ein'); });

    function upload() { if (start < end) { return new Promise(function(resolve){ var chunk = uploading_file.slice(start, temp_end); var reader = new FileReader(); reader.readAsArrayBuffer(chunk); リーダー. onload = function(e) { if (e.target.readyState == 2) { content += new TextDecoder("utf-8").decode(e.target.result); start = temp_end; temp_end = start + BYTES_PER_CHUNK ; if (temp_end > end) temp_end = end; resolve(アップロード()); } } }); } else { uploading_file = null; Promise.resolve(コンテンツ) を返します。} }

  • 改善されたコード、機能しているように見えますが、おそらく読みやすくなっていますか?

    /li>
0 投票する
18 に答える
9469 参照

php - PHPを使用して多次元配列を単一の配列に変換するには?

データベース クエリを実装した後、以下の多次元配列を取得しています。

二次元配列

しかし、以下の形式のように、それを一次元配列に変換したい:

一次元配列

これどうやってするの?