正如标题所述,我想反转Java语言中由对象组成的数组。
示例:var x = [{"score":1},{"score":2},{"score":3}]
为此,我正在使用.reverse()方法。
现在,假设我编写了这段代码
console.log(x);
x.reverse();
console.log(x);
我希望控制台以原始顺序显示阵列,然后以相反的顺序显示。但是,它实际上以相反的顺序显示了两个数组。
为什么?
答案 0 :(得分:3)
console.log()
考虑到可变对象在打印到屏幕上之前是否已更改。由于 OUTPUT -> CHANGE -> OUTPUT 的过程几乎是准同步的,所以两个输出是相同的。您必须使用x的副本才能获得所需的提示。
尝试一下:
// copy x
y = Object.assign({}, x);
console.log(y);
x.reverse();
console.log(x);
答案 1 :(得分:1)
最好的方法是:
var y = [...x].reverse();
var x = [{"score":1},{"score":2},{"score":3}]
console.log(x);
var y = [...x].reverse();
console.log(y);
答案 2 :(得分:-1)
根据此处的MDN:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reverse
函数reverse()
是破坏性的
这意味着该函数更改了原始数组,如果要像这样存储原始数组,则必须创建另一个变量:
var array1 = ['one', 'two', 'three'];
console.log('array1: ', array1);
// expected output: Array ['one', 'two', 'three']
var reversed = array1.reverse();
console.log('reversed: ', reversed);
// expected output: Array ['three', 'two', 'one']
/* Careful: reverse is destructive. It also changes
the original array */
console.log('array1: ', array1);
// expected output: Array ['three', 'two', 'one']