如何解决js:最后设置的值并获取
从数组中选择最后一个元素的最快方法是通过
array[length - 1]
但是,当我得到一个更大的嵌套数组时,我得到的是这样的东西:
let last_item = pathsry[
pathsry.length - 1
][
pathsry[
pathsry.length - 1
].length - 1
]
这不是一个好人,因此我为了获得最后的价值而重写了下面的内容。
// get item at last index
Array.prototype.last = String.prototype.last = function(){
return this[this.length - 1];
}
这让我可以得到
var arr = [[1,2],[2,3],[['a','b'],['c','d']]];
console.log(arr.last().last().last());
// 'd'
但是,如果我尝试设置:
Array.prototype.last = function(){
return this[this.length - 1];
}
var arr = [[1,'d']]];
arr.last().last().last() = 'dd';
// ReferenceError: Invalid left-hand side in assignment
有没有一种方法可以编写一个函数,该函数采用一个数字作为参数来指示嵌套的切片,以及一个可选的设置值参数,该参数为:
function arrayLast(arr,nes,val){
// ...
}
var arra = [[1,'d']]];
console.log(arrayLast(arra,3));
// d
arrayLast(arra,3,'dd');
console.log(arra);
// arr = [[1,'dd']]]
感谢您的帮助
解决方法
这应该有帮助!
Array.prototype.last = function(val=null) {
if (this.length === 0) {
if (val) this[0] = val;
else return null;
}
temp = this;
while(typeof temp[temp.length-1] === "object") {
temp = temp[temp.length-1];
}
if (val) temp[temp.length-1] = val; //Setter
else return temp[temp.length-1]; //Getter
}
var arr = [[1,2],[2,3],[['a','b'],['c','d']]];
console.log(arr.last()); // 'd'
arr.last("dd");
console.log(arr); // [ [ 1,2 ],[ 2,3 ],[ [ 'a','b' ],[ 'c','dd' ] ] ]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。