私がtempArrをシフトすると、async.eachSeriesは実際に座標をスキップします(あるいは、座標の座標も同様にシフトしているようです)。私は同じメモリ位置を持つオブジェクトを指すポインターと関係があると思いますが、どのように動作するのかという概念はありません。変数に値を代入すると、実際に何が起こっていますか?データポインタ?ある配列をシフトすると別の配列に影響するようです
私は
tempArr = _.toArray(coordinates);
代わりの
tempArr = coordinatesArr;
サンプル以下の操作を行う場合、コードは動作します:
var coordinatesArr, tempArr;
var marginLon = [];
var marginLat = [];
var coordinates = {
\t '0': { lon: 13.18472, lat: 32.88972 },
\t '1': { lon: 13.400454, lat: 32.767144 },
\t '2': { lon: -120.59234, lat: 47.372269 },
\t '3': { lon: 122.065977, lat: -26.471618 },
\t '4': { lon: 122, lat: -25 }
}
coordinatesArr = _.toArray(coordinates);
tempArr = coordinatesArr;
// Will work if changed to below
// tempArr = _.toArray(coordinates);
async.eachSeries(coordinatesArr, function(set, acb) {
\t tempArr.shift();
\t if(tempArr.length < 1) return acb();
\t async.eachSeries(tempArr, function(set2, aacb) {
\t \t marginLon.push(Math.abs(set.lon - set2.lon));
\t \t marginLat.push(Math.abs(set.lat - set2.lat));
\t \t aacb();
\t }, function(err) {
\t \t if(err) return acb();
\t \t acb();
\t });
}, function(err) {
\t if(err) return;
\t return;
});
すべての変数は、最終的にのみ、スカラ(非化合物)の値を含めることができますあなたの
'_.toArrayは()'は何ですか? '.shift()'を呼び出す目的は何ですか? – guest271314
_.toArray()は、オブジェクトを配列に変換するlodashライブラリからのものです。私がしようとしているのは、非同期のネストされたforループです。シフトの目的は同じ座標(すなわち座標[0]と座標[0])を比較しないためです。 – GaryH