[JQUERY] 배열에 고유 한 값을 얻는 방법
JQUERY배열에 고유 한 값을 얻는 방법
해결법
-
1.내가 @ 로켓의 답변에 대한 의견에 대해 계속 때문에, 나뿐만 아니라 예를 들어 그 사용없이 라이브러리를 제공 할 수 있습니다. 이것은 포함하고 독특한 두 개의 새로운 프로토 타입 기능을 필요로
내가 @ 로켓의 답변에 대한 의견에 대해 계속 때문에, 나뿐만 아니라 예를 들어 그 사용없이 라이브러리를 제공 할 수 있습니다. 이것은 포함하고 독특한 두 개의 새로운 프로토 타입 기능을 필요로
Array.prototype.contains = 함수 (V) { 위한 VAR (I = 0; I <식에서 나타내지; I ++) { (이것은 [I] === V) true를 반환하는 경우; } false를 반환; }; Array.prototype.unique = 함수 () { VAR의 도착 = []; 위한 VAR (I = 0; I <식에서 나타내지; I ++) { 만약 (!의 arr.contains (이 [I])) { arr.push (이 [I]); } } 편곡 반환; } VAR 중복 = [1, 3, 4, 2, 1, 2, 3, 8; VAR의 순 duplicates.unique = (); // 결과 = 1,3,4,2,8] CONSOLE.LOG (순);
각 요소의 같이 IndexOf -1로 동일한 경우는 더 안정성을 위해, 당신은 MDN의 같이 IndexOf 심 체크에 포함 교체 할 수 있습니다 : 문서를
-
2.또는 현재 브라우저와 호환 한 라이너 (단순하고 기능)을 찾는 사람들을 위해 :
또는 현재 브라우저와 호환 한 라이너 (단순하고 기능)을 찾는 사람들을 위해 :
하자 = "1", "1", "2", "3", "3", "1"]; (=== Ⅰ) (항목, I, AR) => ar.indexOf (항목) = 고유 a.filter하자; CONSOLE.LOG (독특한);
업데이트 18-04-2017
이제 메인 라인 브라우저의 최신 버전에서 대폭적인 지원 (호환성)이 'Array.prototype.includes'처럼 나타납니다
업데이트 29-07-2015 :
브라우저가 직접이 질문에 대답하지 않지만 표준화 된 'Array.prototype.includes'방법을 지원하기위한 작품 계획이있다; 종종 관련이있다.
용법:
["1", "1", "2", "3", "3", "1"].includes("2"); // true
Polyfill (브라우저 지원, 모질라에서 소스) :
// https://tc39.github.io/ecma262/#sec-array.prototype.includes if (!Array.prototype.includes) { Object.defineProperty(Array.prototype, 'includes', { value: function(searchElement, fromIndex) { // 1. Let O be ? ToObject(this value). if (this == null) { throw new TypeError('"this" is null or not defined'); } var o = Object(this); // 2. Let len be ? ToLength(? Get(O, "length")). var len = o.length >>> 0; // 3. If len is 0, return false. if (len === 0) { return false; } // 4. Let n be ? ToInteger(fromIndex). // (If fromIndex is undefined, this step produces the value 0.) var n = fromIndex | 0; // 5. If n ≥ 0, then // a. Let k be n. // 6. Else n < 0, // a. Let k be len + n. // b. If k < 0, let k be 0. var k = Math.max(n >= 0 ? n : len - Math.abs(n), 0); // 7. Repeat, while k < len while (k < len) { // a. Let elementK be the result of ? Get(O, ! ToString(k)). // b. If SameValueZero(searchElement, elementK) is true, return true. // c. Increase k by 1. // NOTE: === provides the correct "SameValueZero" comparison needed here. if (o[k] === searchElement) { return true; } k++; } // 8. Return false return false; } }); }
-
3.여기에 내가 여기에 포함되지 않은 참조 것을 ES6에 대한 많은 청소기 솔루션입니다. 그것은 설정 및 확산 연산자를 사용 ...
여기에 내가 여기에 포함되지 않은 참조 것을 ES6에 대한 많은 청소기 솔루션입니다. 그것은 설정 및 확산 연산자를 사용 ...
var a = [1, 1, 2]; [... new Set(a)]
어떤 반환 [1, 2]
-
4.ES6 구문
ES6 구문
목록 list.filter = ((X, I, a) => a.indexOf () 1~10 ===)
x --> item in array i --> index of item a --> array reference, (in this case "list")
ES5 구문
list = list.filter(function (x, i, a) { return a.indexOf(x) === i; });
브라우저 호환성 : IE9 +
-
5.이제 ES6에서 우리는 새로 도입 된 ES6 기능을 사용할 수 있습니다
이제 ES6에서 우리는 새로 도입 된 ES6 기능을 사용할 수 있습니다
let items = [1,1,1,1,3,4,5,2,23,1,4,4,4,2,2,2] let uniqueItems = Array.from(new Set(items))
또는 반복 가능 객체에 배열 확산 구문에 의해
let items = [1,1,1,1,3,4,5,2,23,1,4,4,4,2,2,2]; let uniqueItems = [...new Set(items)];
그것은 독특한 결과를 반환합니다.
[1, 3, 4, 5, 2, 23]
-
6.ECMA 스크립트 2,016 사용하여 당신은 단순히 이런 식으로 할 수 있습니다.
ECMA 스크립트 2,016 사용하여 당신은 단순히 이런 식으로 할 수 있습니다.
var arr = ["a", "a", "b"]; var uniqueArray = Array.from(new Set(arr)); // Unique Array ['a', 'b'];
설정은 항상 독특하고 Array.from ()를 사용하면 배열에 설정을 변환 할 수 있습니다. 참조를 위해 문서화를 보라.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/from https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set
-
7.당신은 그대로 원래의 배열를 마칠 경우,
당신은 그대로 원래의 배열를 마칠 경우,
당신은 1 세대의 독특한 요소를 포함하는 두 번째 배열이 필요합니다
대부분의 브라우저는 Array.prototype.filter 있습니다 :
var unique= array1.filter(function(itm, i){ return array1.indexOf(itm)== i; // returns true for only the first instance of itm }); //if you need a 'shim': Array.prototype.filter= Array.prototype.filter || function(fun, scope){ var T= this, A= [], i= 0, itm, L= T.length; if(typeof fun== 'function'){ while(i<L){ if(i in T){ itm= T[i]; if(fun.call(scope, itm, i, T)) A[A.length]= itm; } ++i; } } return A; } Array.prototype.indexOf= Array.prototype.indexOf || function(what, i){ if(!i || typeof i!= 'number') i= 0; var L= this.length; while(i<L){ if(this[i]=== what) return i; ++i; } return -1; }
-
8.요즘, 당신은 독특한 설정에 배열을 변환 ES6의 설정 데이터 형식을 사용할 수 있습니다. 당신이 배열 방법을 사용해야 할 경우, 당신은 배열로 다시 설정할 수 있습니다 :
요즘, 당신은 독특한 설정에 배열을 변환 ES6의 설정 데이터 형식을 사용할 수 있습니다. 당신이 배열 방법을 사용해야 할 경우, 당신은 배열로 다시 설정할 수 있습니다 :
var arr = ["a", "a", "b"]; var uniqueSet = new Set(arr); // {"a", "b"} var uniqueArr = Array.from(uniqueSet); // ["a", "b"] //Then continue to use array methods: uniqueArr.join(", "); // "a, b"
-
9.아니 자바 스크립트의 기본,하지만 라이브러리의 많은이 방법을 가지고있다.
아니 자바 스크립트의 기본,하지만 라이브러리의 많은이 방법을 가지고있다.
(링크) Underscore.js의 _.uniq (배열) 꽤 잘 (소스) 작동합니다.
-
10.jQuery를 사용하여, 여기에 내가 만든 배열 고유의 기능입니다 :
jQuery를 사용하여, 여기에 내가 만든 배열 고유의 기능입니다 :
Array.prototype.unique = function () { var arr = this; return $.grep(arr, function (v, i) { return $.inArray(v, arr) === i; }); } console.log([1,2,3,1,2,3].unique()); // [1,2,3]
-
11.짧고 용액 2 어레이를 사용하여;
짧고 용액 2 어레이를 사용하여;
var axes2=[1,4,5,2,3,1,2,3,4,5,1,3,4]; var distinct_axes2=[]; for(var i=0;i<axes2.length;i++) { var str=axes2[i]; if(distinct_axes2.indexOf(str)==-1) { distinct_axes2.push(str); } } console.log("distinct_axes2 : "+distinct_axes2); // distinct_axes2 : 1,4,5,2,3
-
12.빠르고, 소형, 아니 중첩 된 루프는 문자열과 숫자뿐만 아니라, 술어 소요되며, 코드의 5 라인 개체와 함께 작동합니다!
빠르고, 소형, 아니 중첩 된 루프는 문자열과 숫자뿐만 아니라, 술어 소요되며, 코드의 5 라인 개체와 함께 작동합니다!
function findUnique(arr, predicate) { var found = {}; arr.forEach(d => { found[predicate(d)] = d; }); return Object.keys(found).map(key => found[key]); }
예 : 유형별로 고유 항목을 찾으려면 :
var things = [ { name: 'charm', type: 'quark'}, { name: 'strange', type: 'quark'}, { name: 'proton', type: 'boson'}, ]; var result = findUnique(things, d => d.type); // [ // { name: 'charm', type: 'quark'}, // { name: 'proton', type: 'boson'} // ]
당신은 최초의 고유 한 항목 대신 마지막 추가 거기에 found.hasOwnProperty () 체크를 찾으려면.
-
13.솔루션의 대부분은 위의 높은 실행 시간 복잡도가 있습니다.
솔루션의 대부분은 위의 높은 실행 시간 복잡도가 있습니다.
여기에 사용이 감소하고 O (n)이 시간에 일을 할 수있는 솔루션입니다.
Array.prototype.unique = Array.prototype.unique || 함수() { VAR의 도착 = []; this.reduce (함수 (해시 NUM) { 경우 (대해서 typeof 해쉬 [NUM] === '미정의') { 해쉬 [NUM = 1; (NUM) arr.push; } 해시를 반환; }, {}); 편곡 반환; } VAR 인 myArr = [3,1,2,3,3,3]; CONSOLE.LOG (myArr.unique ()); // [3,1,2];
노트 :
이 솔루션은 절감에 의존하지 않는다. 아이디어는 오브젝트 맵을 생성하고 배열에 독특한 사람을 밀어하는 것입니다.
-
14.당신은 단지 사항 Array.some와 Array.reduce와 유니크를 찾을 바닐라 JS가 필요합니다. ES2015 구문으로 만 62 문자입니다.
당신은 단지 사항 Array.some와 Array.reduce와 유니크를 찾을 바닐라 JS가 필요합니다. ES2015 구문으로 만 62 문자입니다.
a.reduce((c, v) => b.some(w => w === v) ? c : c.concat(v)), b)
사항 Array.some 및 Array.reduce는 IE9 +와 다른 브라우저에서 지원됩니다. 그냥 ES2015 구문을 지원하지 않는 브라우저에서 지원 일반 기능을위한 지방 화살표 기능을 변경합니다.
var a = [1,2,3]; var b = [4,5,6]; // .reduce can return a subset or superset var uniques = a.reduce(function(c, v){ // .some stops on the first time the function returns true return (b.some(function(w){ return w === v; }) ? // if there's a match, return the array "c" c : // if there's no match, then add to the end and return the entire array c.concat(v)}), // the second param in .reduce is the starting variable. This is will be "c" the first time it runs. b);
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/some https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce
-
15.
Array.prototype.unique = function () { var dictionary = {}; var uniqueValues = []; for (var i = 0; i < this.length; i++) { if (dictionary[this[i]] == undefined){ dictionary[this[i]] = i; uniqueValues.push(this[i]); } } return uniqueValues; }
-
16.ES6 방법 :
ES6 방법 :
const uniq = (arr) => (arr.filter((item, index, arry) => (arry.indexOf(item) === index)));
-
17.나는 순수 JS에서이 문제를 노력했다. 나는 다음 단계를 따라했습니다 1. 정렬 지정된 배열, 정렬 된 배열을 통해 2 루프, 현재 값과 이전 값과 다음 값을 확인합니다
나는 순수 JS에서이 문제를 노력했다. 나는 다음 단계를 따라했습니다 1. 정렬 지정된 배열, 정렬 된 배열을 통해 2 루프, 현재 값과 이전 값과 다음 값을 확인합니다
// JS var inpArr = [1, 5, 5, 4, 3, 3, 2, 2, 2,2, 100, 100, -1]; //sort the given array inpArr.sort(function(a, b){ return a-b; }); var finalArr = []; //loop through the inpArr for(var i=0; i<inpArr.length; i++){ //check previous and next value if(inpArr[i-1]!=inpArr[i] && inpArr[i] != inpArr[i+1]){ finalArr.push(inpArr[i]); } } console.log(finalArr);
데모
-
18.당신은 오래된 브라우저에 대해 너무 걱정할 필요가없는 경우,이 설계되었습니다 어떤 설정을 정확하게이다.
당신은 오래된 브라우저에 대해 너무 걱정할 필요가없는 경우,이 설계되었습니다 어떤 설정을 정확하게이다.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set
const set1 = new Set([1, 2, 3, 4, 5, 1]); // returns Set(5) {1, 2, 3, 4, 5}
-
19.또 다른이 질문에 생각했다. 여기에 내가 적은 코드와이를 달성하기 위해 한 일이다.
또 다른이 질문에 생각했다. 여기에 내가 적은 코드와이를 달성하기 위해 한 일이다.
VAR distinctMap = {}; VAR testArray = [ '존', '존', '제이슨', '제이슨']; 경우 (나는
-
20.당신은 중복으로 배열을 입력 할 수 있습니다 및 방법 아래 독특한 요소와 배열을 반환합니다.
당신은 중복으로 배열을 입력 할 수 있습니다 및 방법 아래 독특한 요소와 배열을 반환합니다.
function getUniqueArray(array){ var uniqueArray = []; if (array.length > 0) { uniqueArray[0] = array[0]; } for(var i = 0; i < array.length; i++){ var isExist = false; for(var j = 0; j < uniqueArray.length; j++){ if(array[i] == uniqueArray[j]){ isExist = true; break; } else{ isExist = false; } } if(isExist == false){ uniqueArray[uniqueArray.length] = array[i]; } } return uniqueArray; }
-
21.
function findUniques(arr){ let uniques = [] arr.forEach(n => { if(!uniques.includes(n)){ uniques.push(n) } }) return uniques } let arr = ["3", "3", "4", "4", "4", "5", "7", "9", "b", "d", "e", "f", "h", "q", "r", "t", "t"] findUniques(arr) // ["3", "4", "5", "7", "9", "b", "d", "e", "f", "h", "q", "r", "t"]
-
22.함수 findUnique (도착) { VAR 결과 = []; arr.forEach (함수 (d) { 경우 (result.indexOf (d) === -1) (d) result.push; }); 결과를 반환; } VAR 고유 findUnique = ([1, 2, 3, 1, 2, 1, 4]); // [1,2,3,4] CONSOLE.LOG (독특한);
함수 findUnique (도착) { VAR 결과 = []; arr.forEach (함수 (d) { 경우 (result.indexOf (d) === -1) (d) result.push; }); 결과를 반환; } VAR 고유 findUnique = ([1, 2, 3, 1, 2, 1, 4]); // [1,2,3,4] CONSOLE.LOG (독특한);
-
23.여기에 기본 요소뿐만 아니라 사용자 정의 객체에 사용할 수있는 사용자 정의 동등한 기능을 가진 접근 방법은 다음과 같습니다
여기에 기본 요소뿐만 아니라 사용자 정의 객체에 사용할 수있는 사용자 정의 동등한 기능을 가진 접근 방법은 다음과 같습니다
Array.prototype.pushUnique = function(element, equalsPredicate = (l, r) => l == r) { let res = !this.find(item => equalsPredicate(item, element)) if(res){ this.push(element) } return res }
용법:
//with custom equals for objects myArrayWithObjects.pushUnique(myObject, (left, right) => left.id == right.id) //with default equals for primitives myArrayWithPrimitives.pushUnique(somePrimitive)
-
24.우리는 중복을 제거하기 위해 선형 검색을 사용할 수 있다면 난 그냥 생각했다 :
우리는 중복을 제거하기 위해 선형 검색을 사용할 수 있다면 난 그냥 생각했다 :
JavaScript: function getUniqueRadios() { var x=document.getElementById("QnA"); var ansArray = new Array(); var prev; for (var i=0;i<x.length;i++) { // Check for unique radio button group if (x.elements[i].type == "radio") { // For the first element prev will be null, hence push it into array and set the prev var. if (prev == null) { prev = x.elements[i].name; ansArray.push(x.elements[i].name); } else { // We will only push the next radio element if its not identical to previous. if (prev != x.elements[i].name) { prev = x.elements[i].name; ansArray.push(x.elements[i].name); } } } } alert(ansArray);
}
HTML :
<body> <form name="QnA" action="" method='post' "> <input type="radio" name="g1" value="ANSTYPE1"> good </input> <input type="radio" name="g1" value="ANSTYPE2"> avg </input> <input type="radio" name="g2" value="ANSTYPE3"> Type1 </input> <input type="radio" name="g2" value="ANSTYPE2"> Type2 </input> <input type="submit" value='SUBMIT' onClick="javascript:getUniqueRadios()"></input> </form> </body>
-
25.나는 JQuery와 고유 기능을 붙박이 있습니다.
나는 JQuery와 고유 기능을 붙박이 있습니다.
uniqueValues= jQuery.unique( duplicateValues );
자세한 내용은 당신이 JQuery와 API의 자료 문서를 참조 할 수 있습니다.
http://api.jquery.com/jquery.unique/
from https://stackoverflow.com/questions/11246758/how-to-get-unique-values-in-an-array by cc-by-sa and MIT license
'JQUERY' 카테고리의 다른 글
[JQUERY] 어떻게을 가진 요소를 선택 jQuery를받을 수 있나요. 자신의 ID에서 (기간)? (0) | 2020.10.05 |
---|---|
[JQUERY] 토글 쇼 / 버튼 숨기기 DIV? (0) | 2020.10.05 |
[JQUERY] 없음 '액세스 제어는 - - 원산지를 허용'헤더는 요청 된 자원에 존재합니다. 원산지는 '...'때문에 접근이 허용되지 않는다 (0) | 2020.10.05 |
[JQUERY] JQuery와의 URL의 마지막 부분 (0) | 2020.10.05 |
[JQUERY] 어떻게 방울을 업로드 자바 스크립트를 할 수 있습니까? (0) | 2020.10.05 |