如何声明一个空的数值变量?(相当于Java中的"int x;")



给定一个包含子数组的数组,我需要返回一个由最大数量的子数组组成的新数组。

数组:

let arr = [[1,2], [10, 15], [30, 40], [-1, -50]];


新数组应为:

newArr = [2, 40, -1];


我已经解决了它,但它不适用于负数,因为初始值为 0。
如何在 java 中声明一个空的数字变量,例如"int x;"?

let newArr = [0, 0, 0, 0]; // Instead of 0 I need an empty numeric 
for (let x = 0; x < arr.length; x++) {
for (let y = 0; y < arr[x].length; y++) {
if (newArr[x] < arr[x][y]) {
newArr[x] = arr[x][y];
}
}
}
console.log(newArr) // 2,15,40,0

预期: 2, 15, 40, -1

你可以拿Math.max并摊开项目。

let array = [[1,2], [10, 15], [30, 40], [-1, -50]],
max = array.map(a => Math.max(...a));
console.log(max);

您的问题是-1不小于0,因此您的数组不会更新,而是以-Infinitys 而不是0开始您的newArr,以便任何数字都会大于它,如下所示:

let arr = [
[1, 2],
[10, 15],
[30, 40],
[-1, -50]
];
let newArr = []; 
for (let x = 0; x < arr.length; x++) {
newArr.push(-Infinity); // populate it with `-Infinity`
for (let y = 0; y < arr[x].length; y++) {
if (newArr[x] < arr[x][y]) {
newArr[x] = arr[x][y];
}
}
}
console.log(newArr) // 2,15,40,-1

空数值对使用逻辑也没有帮助,因为您设置了错误的初始值进行比较。看到这个,和你的一样,有小的修复:

let arr = [[1,2], [10, 15], [30, 40], [-1, -50]];
let newArr = [arr[0][0], arr[1][0], arr[2][0], arr[3][0]]; 
for (let x = 0; x < arr.length; x++) {
for (let y = 0; y < arr[x].length; y++) {
if (newArr[x] < arr[x][y]) {
newArr[x] = arr[x][y];
}
}
}

您可以使用初始值作为第一个元素或子数组。


let arr = [[1,2], [10, 15], [30, 40], [-1, -50]];
newArr = [] // Instead of 0 I need an empty numeric
for (let x = 0; x < arr.length; x++) {
	newArr[x] = arr[x][0]
for (let y = 0; y < arr[x].length; y++) {
if (newArr[x] < arr[x][y]) {
newArr[x] = arr[x][y];
}
}
}
console.log(newArr) // 2,15,40,0

或者您可以使用map函数返回最大值。

let arr = [[1,2], [10, 15], [30, 40], [-1, -50]];
let newArr = arr.map(subArr => Math.max(...subArr))
console.log(newArr)

最新更新