>source

the fastest way to select the last element from an array is by 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, 2], [2, 3], [['a', 'b'], ['c', 'd']]];
arr.last().last().last() = 'dd';
// ReferenceError: Invalid left-hand side in assignment

중첩 된 슬라이스를 나타내는 매개 변수와 설정 값의 선택적 매개 변수로 숫자를 취하는 함수를 작성할 수있는 방법이 있습니까?

function arrayLast(arr, nes, val){
    // ...
}
var arra = [[1, 2], [2, 3], [['a', 'b'], ['c', 'd']]];
console.log(arrayLast(arra, 3));
// d
arrayLast(arra, 3, 'dd');
console.log(arra);
// arr = [[1, 2], [2, 3], [['a', 'b'], ['c', 'dd']]]

당신의 도움에 감사드립니다

  • 답변 # 1

    이것이 도움이 될 것입니다!

    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' ] ] ]
    
    

  • 이전 java - PrintWriter는 어떻게 바이트 스트림에 쓸 수 있지만 BufferedWriter는 쓸 수 없습니까?
  • 다음 요구 사항에 따라 C ++에서 함수 프로토 타입 정의