CFML을 사용하여 두 배열이 동일한 지 어떻게 테스트 할 수 있습니까?

StackOverflow https://stackoverflow.com/questions/30288

  •  09-06-2019
  •  | 
  •  

문제

CFML (ColdFusion Markup Langauge, 일명 ColdFusion)을 사용하여 두 개의 단일 차원 배열이 동일한 지 어떻게 비교할 수 있습니까?

도움이 되었습니까?

해결책

배열의 모든 값이 단순한 값이라고 가정하면 가장 쉬운 방법은 배열을 목록으로 변환하고 문자열을 비교하는 것입니다. 라코 디스

다른 솔루션만큼 우아하지는 않지만 간단합니다.

다른 팁

CFML의 기본 Java를 사용하여 두 배열을 비교하는 매우 간단한 방법이 있습니다.Adobe의 Rupesh Kumar ( http://coldfused.blogspot.com/ )의 최근 블로그에 따르면ColdFusion 배열은 Java 목록 (java.util.List)의 구현입니다.따라서 모든 Java 목록 메소드를 CFML 배열에 사용할 수 있습니다.

따라서 두 배열을 비교하려면 equals 메소드를 사용하기 만하면됩니다.배열이 같으면 YES를, 같지 않으면 NO를 반환합니다. 라코 디스

James의 답변을 기반으로 JSON이 WDDX보다 더 선호 될 수 있다고 생각했습니다.실제로 훨씬 더 효율적인 것으로 입증되었습니다.해시를 비교하는 것은 그다지 비싸지 않지만 데이터를 직렬화 한 다음 해시를 생성하는 것은 (더 크고 / 또는 더 복잡한 데이터 구조의 경우) 가능합니다. 라코 디스

다음은 위 코드가 내 컴퓨터에서 생성하는 출력입니다. 라코 디스

직렬화하는 데이터 구조는 상당히 복잡하지만 작은 것으로 간주 될 수 있습니다.이렇게하면 WDDX보다 JSON 직렬화의 효율성이 훨씬 더 선호됩니다.

어쨌든 해시 비교를 사용하여 "compareAnything"메서드를 작성하려고한다면 WDDX를 통해 JSON 직렬화를 사용합니다.

cflib의 arrayCompare () 사용자 정의 함수는이를 수행해야합니다. http://cflib.org/index.cfm? event= page.udfbyid & udfid= 1210

Jason의 답변은 확실히 최고이지만 이전에 한 작업은 WDDX로 직렬화 된 객체에 대해 해시 비교를 수행 한 것입니다.

이 방법은 상대적으로 작은 배열에만 유용하지만 순수하게 CFML을 유지하려는 경우 또 다른 옵션입니다.또한 다른 데이터 유형에도이 방법을 적용 할 수 있다는 이점이 있습니다 ...

편집 : Adams의 전적으로 옳습니다 (그의 숫자에서 알 수 있듯이). JSON은이 상황에서뿐만 아니라 일반적인 직렬화에 훨씬 더 경제적입니다.내 방어에서 나는 내장 JSON 함수가없는 CFMX 6.1을 사용하고 있으며 외부 라이브러리를 피하려고했습니다.

예전에 CF의 네이티브 Java 객체를 사용하는 방법을 찾고 있었는데이 질문은 검색 결과 북마크 한 블로그 게시물 몇 개를 생각 나게했습니다. <인용구>

ColdFusion 배열은 실제로 Java 목록 (java.util.List)의 구현입니다. 따라서 모든 목록 메서드는 실제로 Array에서 사용할 수 있습니다. CF는 Array 함수를 사용하여 대부분의 목록 기능을 제공하지만 Java 목록으로 가능한 것은 CF 함수로 직접 할 수없는 일이 거의 없습니다.

  1. 두 배열 병합
  2. 다른 배열의 중간에 배열 추가
  3. 배열에서 요소 검색
  4. 배열 1을 검색하여 배열 2의 요소가 모두 있는지 확인
  5. 동등 검사
  6. 배열 2에서 배열 1의 요소 제거

    보낸 사람 : http : //coldfused.blogspot .com / 2007 / 01 / extend-cf-native-objects-harnessing.html

    내가 찾은 또 다른 리소스는 네이티브 Java Array 클래스를 사용하여 고유 한 값을 얻고 날짜 배열을 정렬해야하는 경우 사용자 정의 정렬 함수를 만드는 방법을 보여줍니다.

    http : //www.barneyb. com / barneyblog / 2008 / 05 / 08 / use-coldfusion-use-java /

    이 두 번째 링크에는 작성자가 기본적으로 다른 Java 클래스를 사용하여 CF 기능을 통해 기능이나 속도를 얻는 방법을 보여주는 다른 게시물에 대한 링크가 포함되어 있습니다.

이러한 모든 솔루션은 두 어레이가 동일한 지 확인합니다.그들은 그들이 같은 물건인지 확인하지 않습니다.네이티브 CF에서이를 수행하는 유일한 방법은 어떤 방식 으로든 객체를 변경하고 두 참조가 모두 변경되었는지 확인하는 것입니다.

또한 특정 자바 클래스를 구현하거나 메소드를 노출하는 CF에 의존하는 것을 조심해야한다고 생각합니다.이들은 변경 될 수 있습니다.

두 배열을 비교하여 내용이 동일한 지 확인하려면 길이 확인 (다른 경우 false를 반환) 길이가 1에서 배열 len까지 동일하고 요소가 동일한 break인지 확인하고 그렇지 않으면 false를 반환합니다.

간단한 값에서 작동합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top