我想創建一個可以操作數組的函數...邏輯操作,以刪除索引
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
以獲得3
。 它只是還減去任意數量的陣列上,如果添加了太多上的morphToValue
另一個例子是這樣超出我想要的陣列
VAR myArray的= [2,1,1 ,1,1];
是這樣
[2, 1, 3];
通過做這樣
myFunction(myArray,2,3);
調用myFunction的我怎樣才能使這個可能嗎?如果我將在數組的最後一個索引中設置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);
}
請出示你已經嘗試了什麼,我們不是在這裏做你的工作您。 – Barmar
@Barmar我重新編輯了我的帖子,我把它放在小提琴上http://jsfiddle.net/eESNj/ –
然後這個:'myFunction(myArray,0,3); // myArray是[2,1,1,1,1]「它應該是這樣嗎? myFunction的(myArray的,0,2); // myArray是[2,1,1,1,1]' – aIKid