配列を操作できる関数を作成しようとしています...
var myArray = [2, 1, 1, 1, 1];
今はこうであってほしい
[3、1、1、1]
今私の関数は3つのパラメータを受け入れます
- ArrayToProcess - 処理される配列です
- indexTarget - これは、インデックスによって定義される選択された値です
- morphToValue - これは、選択した値にしたい値です。
私の目的は、たとえば indexTarget を受け入れることです
myFunction(myArray,0,3); //myArray is [2, 1, 1, 1, 1]
ご覧のとおり、関数が をループするようにしたいmyArray
ので、 に到達するまで配列に数値を追加しようとするmorphToValue
ため、[3, 1, 1, 1] になり2
、最初のインデックス1
と獲得する 2 番目のインデックス3
。morphToValue の超過に追加しすぎると、配列の任意の数値もマイナスになります。
別の例は次のようになります配列が必要です
var myArray = [2, 1, 1, 1, 1];
このようになる
[2, 1, 3];
このようにcall myFunctionを実行することによって
myFunction(myArray,2,3);
どうすればこれを可能にできますか? 配列の最後のインデックスにindexTargetを設定する場合は、配列の最初から繰り返し続けたいので、次のようになります
var myArray = [2, 1, 1, 1, 1];
それはなる
[1, 1, 1, 3]; //when I invoke myFunction(myArray,4,3);
わからないことがあればコメントください。...
これは私がこれまでに試したことですhttp://jsfiddle.net/eESNj/
var myArray = ['2', '1', '1', '1', '1'];
indexPurge(myArray, 0, 3);
function indexPurge(haystack, indexTarget, morphToValue) {
var toIntHaystack = [];
for (var i = 0; i < haystack.length; i++) {
toIntHaystack.push(parseInt(haystack[i]));
}
console.log(toIntHaystack); //before
var i = 0;
var purgedValue = 0;
do {
console.log(i + ' - ' + toIntHaystack[i]);
purgedValue += toIntHaystack[i];
toIntHaystack.splice(i, 1);
if (purgedValue >= morphToValue) {
break;
}
i++;
} while (i < toIntHaystack.length);
toIntHaystack.splice(indexTarget, 0, morphToValue); //after
console.log(toIntHaystack);
}