我正在尝试创建一个可以操作数组的函数...
var myArray = [2, 1, 1, 1, 1];
现在我希望它是这样的
[3, 1, 1, 1]
现在我的函数接受 3 个参数
- ArrayToProcess - 它将被处理的数组
- indexTarget - 这是由 index 定义的选定值
- 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
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);
}