programing

어레이에서 $$hashKey 제거

powerit 2023. 3. 29. 21:56
반응형

어레이에서 $$hashKey 제거

$scope.appdata = [{name: '', position: '', email: ''}];

각도 컨트롤러로 작성한 어레이입니다.

그런 다음 push 메서드를 사용하여 배열에 값을 삽입합니다.

$scope.appdata.push({name: 'jenson raby', position: '2', email: 'jensonraby@gmail.com'});

삽입 후의 어레이 값은 다음과 같습니다.

$$hashKey:"00F",name:"jenson raby",position:"2",email:"jensonraby@gmail.com",

여기 추가.$$hashKey삽입 후 어레이에 추가되었지만 어레이에서 삭제해야 합니다.

어레이를 데이터베이스에 삽입해야 한다는 의견을 바탕으로 JSON 문자열로 변환하여 DB에 저장하는 것으로 가정합니다.만약 틀렸다면 알려주시면 제가 이 답변을 수정할 수 있는지 알아보겠습니다.

어레이를 JSON으로 변환할 때 어레이를 수정하기 위한 두 가지 옵션이 있습니다.첫 번째 방법은 선두가 있는 속성 이름을 자동으로 삭제하는 편리한 방법입니다.$$어레이(또는 오브젝트)를 시리얼화하기 전에 참조해 주세요.다음과 같이 사용할 수 있습니다.

var json = angular.toJson( $scope.appdata );

다른 옵션은 보다 세밀한 제어가 필요한 경우 사용해야 합니다.replacer인수가 포함되어 있습니다.리페이서 기능을 사용하면 속성이 JSON에 시리얼화되기 전에 필터링 또는 변경할 수 있습니다.이걸 이용해서 옷을 벗기면$$hashKey:

var json = JSON.stringify( $scope.appdata, function( key, value ) {
    if( key === "$$hashKey" ) {
        return undefined;
    }

    return value;
});

게으른 사람들을 위한 빠른 해결책:

JSON.parse(angular.toJson($scope.appdata))

앵글 뒤에 있는 코드.toJson 메서드는 다음과 같습니다.

function toJson(obj, pretty) {
  if (isUndefined(obj)) return undefined;
  if (!isNumber(pretty)) {
    pretty = pretty ? 2 : null;
  }
  return JSON.stringify(obj, toJsonReplacer, pretty);
}

JSON.stringify 메서드가 호출되면 $로 시작하는 모든 메서드가 삭제됩니다.

function toJsonReplacer(key, value) {
  var val = value;

  if (typeof key === 'string' && key.charAt(0) === '$' && key.charAt(1) === '$') {
    val = undefined;
  } else if (isWindow(value)) {
    val = '$WINDOW';
  } else if (value &&  window.document === value) {
    val = '$DOCUMENT';
  } else if (isScope(value)) {
    val = '$SCOPE';
  }

  return val;
}

따라서 Sean의 asnwer를 기반으로 하기 위해 JSON.stringify 메서드를 덮어쓰고 필요한 작업을 수행할 수 있습니다.각 방문의 문서에서 자세한 내용을 보려면 https://github.com/angular/angular.js/pull/14221를 방문하십시오.

언급URL : https://stackoverflow.com/questions/32344495/remove-hashkey-from-array

반응형