我正在尝试将所有数组号返回为负数(* -1); 我被卡住了。请帮忙!
function makeListNegative (array){
for(i=0; i <array.length; i++);
return i * -1;
}
var negativeList = makeListNegative([7, 2, 3, 4]);
console.log(negativeList);
此函数仅将数组中的最后一个数字返回为-4。我希望显示所有列表编号。
答案 0 :(得分:3)
function makeListNegative (array) { for (i = 0; i < array.length; i++); // 1 return i * -1; // 2 }
您的for
语句会迭代(在正确的范围内,以正确的间隔),但是用分号结尾的行将不执行任何操作。
然后返回i
的负值,它是数组的长度,而不是数组的值或具有所有负值的数组。
如果您希望采用传统方法,则可以将每次迭代中的值推入新数组,并在迭代后返回新数组。
function makeListNegative(array) {
var i, l,
temp = [];
for (i = 0, l = array.length; i < l; i++) {
temp.push(-array[i]);
}
return temp;
}
var negativeList = makeListNegative([7, 2, 3, 4]);
console.log(negativeList);
您可以使用Array#map
映射负值。
function makeListNegative(array) {
return array.map(v => -v);
}
var negativeList = makeListNegative([7, 2, 3, 4]);
console.log(negativeList);
答案 1 :(得分:3)
您的代码
它本可以像这样解决
function makeListNegative(array) {
for (var i = 0; i < array.length; i++) { // make i local
array[i] *= -1; // negate the array item
}
return array; // return the manipulated array
}
var negativeList = makeListNegative([7, 2, 3, 4]);
console.log(negativeList);
或者使用Array.map-在标准JS中-粗箭头=>
是ES6 +,在IE中不起作用
var negativeList = [7, 2, 3, 4].map(function(num) { return -num; });
console.log(negativeList);
答案 2 :(得分:2)
您需要将值映射为负值。
function makeListNegative(array) {
return array.map(x => x * -1);
}
var negativeList = makeListNegative([7, 2, 3, 4]);
console.log(negativeList);
答案 3 :(得分:0)
当您从return
循环中for
进入时,此方法将无效。尝试使用
答案 4 :(得分:0)
您可以使用map返回负值
var negativeList= [7, 2, 3, 4].map(function(value){
return -v;
})
答案 5 :(得分:0)
由于每个人都使用map
解决了问题,因此下面是使用[forEach][1]
解决的方法,
var makeNeg = function(arr){
arr.forEach(function(value, index){
arr[index] = arr[index]*-1;
});
return arr;
}
console.log(makeNeg([7, 2, 3, 4]))
答案 6 :(得分:0)
您可以使用ES6语法打动高级开发人员:
const makeListNegative = array => array.map(num => -num)
const negativeList = makeListNegative([7, 2, 3, 4]);
console.log(negativeList);
如果您不想创建函数:
const negativeList = [7, 2, 3, 4].map(num => -num);
console.log(negativeList);