私は2つの関数を持っています。そのうちの1つは、オブジェクトを配列にプッシュします。オブジェクトからキーを削除し、値を配列に格納する別の関数を呼び出します。Javascriptスコープでグローバル変数を設定しない
しかし、それはグローバルな配列に期待される結果を設定していないので、私は残りのコードを使用します。
var arr1 = [];
function foo(callback){
arr1.push({id: 1},{id: 2});
console.log(JSON.stringify(arr1));
callback(arr1);
}
foo(function(arr1){
\t bar(arr1);
});
function bar(arr1){
\t arr1 = arr1.map(x => x.id);
console.log(JSON.stringify(arr1));
}
console.log(JSON.stringify(arr1)); // I want the result to be [1,2]
私の実際のコードベースに、機能は非常に複雑なので、私は、第2の機能を無視して、最初の関数にすべてのそれの内容を置くが、それは物事が乱雑になるだろうことができます。だからこれを解決する方法はありますか?
これは、それはあなたが、配列の値を渡しているので、どのように動作するかを正確に更新されるローカル変数に渡します。代わりにここで何をすべきかを知ることができます:https://jsfiddle.net/hkwg04py/ –
@BrettJeffresonしかし、私は私のケースでは配列を渡す必要があります。そうでなければ、それは役に立たないです – marukobotto
なぜコールバックコンセプトを使用していますか?あなたはそれらなしでそれを行うことができ、あなたのコードを簡単にし、あなたが私の下の答えに示されているようにあなたが望むものを達成することができます。 –