我有以下变量:
var a = [30,6,26,49,3,9,28];
以下两个功能:
function init(data) {
var modifiedData = data.reverse().slice(1, data.length).reverse();
return modifiedData;
}
// Output should be:
// Init: 30,6,26,49,3,9,28
// [30, 6, 26, 49, 3, 9]
function last(data) {
var modifiedData = data.reverse().slice(0, 1);
return modifiedData;
}
// Output should be:
// Last: 30,6,26,49,3,9,28
// [28]
如果我按照这样的方式调用每个函数:
init(a);
last(a);
我从第二个函数得到以下输出:
Last: 28,9,3,49,26,6,30
[30]
因为第一个函数显然是在数据上应用了 reverse(),而第二个函数似乎从第一个函数继承了 reverse()。
如何使用相同的变量作为参考来连续使用这两个函数?
答案 0 :(得分:2)
Array.prototype.reverse
反转实际数组(在使用.slice()
克隆之前)。忘掉反转,你可以直接用array.slice做到这一点:
var a = [30,6,26,49,3,9,28];
function init(data) {
console.log("Init: " + data);
var modifiedData = data.slice(0, -1);
console.log(modifiedData);
return modifiedData;
}
// Output should be:
// Init: 30,6,26,49,3,9,28
// [30, 6, 26, 49, 3, 9]
function last(data) {
console.log("Last: " + data);
var modifiedData = data.slice(-1);
console.log(modifiedData);
return modifiedData;
}
// Output should be:
// Last: 30,6,26,49,3,9,28
// [28]
init(a);
last(a);
运行时,请查看浏览器控制台以查看结果。
-1
与data.length - 1
相同。
答案 1 :(得分:1)
插入第一行功能:
data = data.slice(0); // make copy
答案 2 :(得分:1)
尝试在切片后使用反向。 Slice克隆数组。
var a = [30,6,26,49,3,9,28];
function init(data) {
document.write("Init: " + data);
var modifiedData = data.slice(0, data.length - 1);
document.writeln(" " + modifiedData);
return modifiedData;
}
// Output should be:
// Init: 30,6,26,49,3,9,28
// [30, 6, 26, 49, 3, 9]
function last(data) {
document.writeln("Last: " + data);
var modifiedData = data.slice(data.length - 1, data.length);
document.writeln(" " + modifiedData);
return modifiedData;
}
// Output should be:
// Last: 30,6,26,49,3,9,28
// [28]
init(a);
last(a);