我正在尝试使用pop()和push()来计算如何增加数组中的最后一个元素。我在增加pop数组后继续获取原始值。
需要发生的是newArray需要等于_array,最后一个元素增加1.例如'0,0,7'将变为'0,0,8'。
非常感谢正确方向的轻微推动。
var someArray = [0,0,7];
var incrementLastArrayElement = function(_array) {
var newArray = [];
var popArray = someArray.pop();
newArray = someArray.push(popArray++);
}
console.log(incrementLastArrayElement(someArray));
答案 0 :(得分:1)
您没有使用_array
而且,您没有返回任何内容。你可以在下面做。 _array.length - 1
为您提供了使用++
进行递增的最后一个索引。
最后,您使用return
关键字 返回更新的数组
var incrementLastArrayElement = function(arr) {
arr[arr.length - 1]++; // increment
return arr; // return it
}
console.log(incrementLastArrayElement([0,0,7])); // [0,0,8]
如果要返回新数组,只需添加行
即可arr = arr.slice(0)
位于函数体的顶部,因此arr
包含一个新的引用。
答案 1 :(得分:1)
您的代码几乎正确。
你犯了两个错误:
使用++
和--
运算符时,将置于之前,变量执行递增/递减并使用表达式中的新值。将运算符放在变量之后使用表达式中的原始值,然后递增/递减变量。
在致电push
时,您正在递增{/ 1}}变量 后推送它,因此推送的值是原始未增加的值。
其次,您正在函数中创建一个新数组,因此原始数组不会被更改。在JavaScript中,数组通过引用传递,因此您可以更改函数内的数组参数
popArray
或更简洁:
var incrementLastArrayElement = function (_array) {
var lastValue = _array.pop ();
_array.push(++lastValue);
}
答案 2 :(得分:1)
这是一个过度设计的解决方案:
function incrementLast(array) {
return array.map(
function(elt, i, arr) {
return elt + (i === arr.length - 1);
}
);
}
这会将输入数组中的每个元素映射到自身,除非它是最后一个元素,在这种情况下它会添加一个(true)。
使用箭头功能稍微更紧凑:
function incrementLast(array) {
return array.map((elt, i) => elt + (i === array.length - 1));
}
答案 3 :(得分:0)
var someArray = [0,0,7];
var incrementLastArrayElement = function(_array) {
var newArr = _array.slice();
newArr[newArr.length - 1]++;
return newArr;
}
console.log(incrementLastArrayElement(someArray));
答案 4 :(得分:0)
试试这个
var incrementLastArrayElement = function(_array) {
_array[_array.length-1]= _array[_array.length-1]+1;
return _array
}
console.log(incrementLastArrayElement([0,0,7]));