배열의 첫 번째 요소를 얻는 방법?
다음과 같이 배열에서 첫 번째 요소를 얻는 방법은 무엇입니까?
var ary = ['first', 'second', 'third', 'fourth', 'fifth'];
나는 이것을 시도했다 :
alert($(ary).first());
그러나 그것은 돌아올 것이다 [object Object]
. 따라서 배열에서 첫 번째 요소를 가져와야 'first'
합니다.
이처럼
alert(ary[0])
왜 바닐라 JavaScript 배열을 jQuery로 수정합니까? 표준 JavaScript를 사용하십시오!
var ary = ['first', 'second', 'third', 'fourth', 'fifth'];
alert(ary[0]);
https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array
상황에 따라 아래의 몇 가지 방법이 있습니다.
대부분의 경우 첫 번째 요소에 액세스하는 가장 간단한 방법은
yourArray[0]
그러나 [0]이 실제로 존재하는지 확인해야합니다.
실제 배열에 신경 쓰지 않고 색인이 존재하는지 확인하고 싶지 않은 경우 첫 번째 요소 또는 정의되지 않은 인라인을 가져 오려는 실제 사례가 있습니다.
이 경우 shift () 메서드를 사용 하여 첫 번째 요소를 가져올 수 있지만이 메서드는 원래 배열을 수정하고 첫 번째 항목을 제거하고 반환해야합니다. 따라서 배열의 길이는 1 씩 줄어 듭니다. 이 방법은 첫 번째 요소를 가져와야하지만 인라인 배열에서는 사용할 수 있지만 원래 배열은 신경 쓰지 않습니다.
yourArray.shift()
알아야 할 중요한 사항은 배열이 [0] 인덱스로 시작하는 경우 위의 두 옵션 만 옵션이라는 것입니다.
첫 번째 요소가 삭제 된 경우가 있는데, 예를 들어 yourArray [0]을 삭제하면 배열에 "구멍"이 남습니다. 이제 [0]의 요소는 정의되지 않았지만 첫 번째 "기존"요소를 가져 오려고합니다. 나는 이것에 대한 많은 실제 사례를 보았습니다.
따라서 배열과 첫 번째 키에 대해 알지 못하거나 구멍이 있음을 알고 있으면 첫 번째 요소를 계속 얻을 수 있습니다.
find () 를 사용 하여 첫 번째 요소를 얻을 수 있습니다 .
find ()의 장점은 조건을 만족하는 첫 번째 값에 도달하면 루프를 빠져 나가는 효율성입니다 (자세한 내용은 아래 참조). (널 또는 다른 빈 값도 제외하도록 조건을 사용자 정의 할 수 있습니다)
var firstItem = yourArray.find(x=>x!==undefined);
또한 filter ()를 여기에 먼저 복사에서 배열을 "수정"하고 원래 배열을 그대로 유지하면서 첫 번째 요소를 가져 오는 옵션으로 포함하고 싶습니다 .
여기에 filter ()를 포함시키는 또 다른 이유는 find () 이전에 존재했으며 많은 프로그래머가 이미 사용하고 있기 때문입니다 (find ()에 대한 ES5는 ES6 임).
var firstItem = yourArray.filter(x => typeof x!==undefined).shift();
filter ()는 실제로 효율적인 방법이 아니며 (filter ()가 모든 요소를 통해 실행 됨) 다른 배열을 만듭니다. 예를 들어 forEach를 사용하면 성능에 미치는 영향이 미미하므로 소규모 어레이에서 사용하는 것이 좋습니다.
(일부 사람들은 for ... in 루프를 사용하여 첫 번째 요소를 얻는 것이 좋습니다.하지만 for ... in은 인덱스 순서가 중요한 배열을 반복하는 데 사용해서는 안되기 때문에이 방법을 권장 하지 않습니다. 브라우저가 대부분의 순서를 존중한다고 주장 할 수는 있지만 순서를 보장하지는 않습니다. 그렇지만 forEach는 모든 요소를 통과 할 수 있기 때문에 많은 제안 된 문제를 해결하지 못합니다. 간단한 방법을 사용하는 것이 좋습니다 for 루프 및 키 / 값 확인
find ()와 filter ()는 요소의 순서를 보장하므로 위와 같이 사용하는 것이 안전합니다.
첫 번째 요소가 삭제 된 경우 인덱스 0의 요소가 없을 수 있습니다.
let a = ['a', 'b', 'c'];
delete a[0];
for (let i in a) {
console.log(i + ' ' + a[i]);
}
jQuery없이 첫 번째 요소를 얻는 더 좋은 방법 :
function first(p) {
for (let i in p) return p[i];
}
console.log( first(['a', 'b', 'c']) );
가독성 을 유지하려면 항상 첫 번째 함수를 다음에 추가하십시오 Array.protoype
.
Array.prototype.first = function () {
return this[0];
};
그런 다음 첫 번째 요소를 쉽게 검색 할 수 있습니다.
[1, 2, 3].first();
> 1
ES6 파괴 사용
let [first] = [1,2,3];
어느 것과
let first = [1,2,3][0];
배열이 인덱스 0에서 채워지지 않을 경우 다음을 사용할 수 있습니다 Array.prototype.find()
.
var elements = []
elements[1] = 'foo'
elements[2] = 'bar'
var first = function(element) { return !!element }
var gotcha = elements.find(first)
console.log(a[0]) // undefined
console.log(gotcha) // 'foo'
array.find(e => !!e); // return the first element
"find"는 필터와 일치하는 첫 번째 요소를 리턴하고 && !!e
일치하는 요소입니다.
참고 첫 번째 요소는 "Falsy"없는 경우에만 작동 : null
, false
, NaN
, ""
, 0
,undefined
당신은 할 수 있습니다 :
let first = array.find(e => true);
또는 진실한 요소 (아마도 원하는 요소) 에만 관심이있는 경우 :
let first = array.find(Boolean);
대한 배려 가독성 동안 숫자 빈도에 의존하지 내가 추가 first()
로 α- 함수를 Array.protoype
함께 정의하여 Object.defineProperty()
어떤 완화시킨다이 수정의 함정이 내장 된 Array 객체의 프로토 타입 직접 ( 여기에서 설명 ).
성능은 꽤 좋지만 ( find()
첫 번째 요소 다음에 멈춤) 완벽하거나 보편적으로 액세스 할 수는 없습니다 (ES6 만 해당). 더 많은 배경을 보려면 @Selays answer를 읽으 십시오 .
Object.defineProperty(Array.prototype, 'first', {
value() {
return this.find(e => true); // or this.find(Boolean)
}
});
그런 다음 첫 번째 요소를 검색하려면 다음을 수행하십시오.
let array = ['a', 'b', 'c'];
array.first();
> 'a'
실제로 볼 수있는 스 니펫 :
Object.defineProperty(Array.prototype, 'first', {
value() {
return this.find(Boolean);
}
});
console.log( ['a', 'b', 'c'].first() );
시도하십시오 alert(ary[0]);
.
underscore.js ( http://underscorejs.org/ )를 사용하는 경우에만 다음을 수행 할 수 있습니다.
_.first(your_array);
메소드는 배열과 작품 , 그리고 그것을 객체와 함께 작동 도 (주의, 객체는 보장 된 순서가 없습니다!).
원래 배열은 수정되지 않기 때문에이 방법을 가장 선호합니다.
// In case of array
var arr = [];
arr[3] = 'first';
arr[7] = 'last';
var firstElement;
for(var i in arr){
firstElement = arr[i];
break;
}
console.log(firstElement); // "first"
// In case of object
var obj = {
first: 'first',
last: 'last',
};
var firstElement;
for(var i in obj){
firstElement = obj[i];
break;
}
console.log(firstElement) // First;
나는 다른 언어에서 JavaScript로 온 사람들이 배열의 첫 번째 요소를 head()
찾거나 first()
얻는 것을 알고 있지만 어떻게 할 수 있습니까?
아래에 배열이 있다고 상상해보십시오.
const arr = [1, 2, 3, 4, 5];
JavaScript에서 간단하게 다음을 수행 할 수 있습니다.
const first = arr[0];
또는 더 깔끔하고 새로운 방법은 다음과 같습니다.
const [first] = arr;
그러나 단순히 다음 과 같은 함수 를 작성할 수도 있습니다 .
function _first(arr) {
if(!Array.isArray(arr)) return;
return arr[0];
}
밑줄을 사용하는 경우 원하는 것과 동일한 기능을 수행하는 함수 목록이 있습니다.
_.first
_.head
_.take
When there are multiple matches, JQuery's .first() is used for fetching the first DOM element that matched the css selector given to jquery.
You don't need jQuery to manipulate javascript arrays.
Find the first element in an array using a filter:
function first<T>(arr: T[], filter: (v: T) => boolean): T {
let result: T;
return arr.some(v => { result = v; return filter(v); }) ? result : undefined;
}
In plain javascript:
function first(arr, filter) {
var result;
return arr.some(function (v) { result = v; return filter(v); }) ? result : undefined;
}
And similarly, indexOf:
In typescript:
function indexOf<T>(arr: T[], filter: (v: T) => boolean): number {
let result: number;
return arr.some((v, i) => { result = i; return filter(v); }) ? result : undefined;
}
In plain javascript:
function indexOf(arr, filter) {
var result;
return arr.some(function (v, i) { result = i; return filter(v); }) ? result : undefined;
}
You could also use .get(0):
alert($(ary).first().get(0));
To get the first element of the array.
Why not account for times your array might be empty?
var ary = ['first', 'second', 'third', 'fourth', 'fifth'];
first = (array) => array.length ? array[0] : 'no items';
first(ary)
// output: first
var ary = [];
first(ary)
// output: no items
In ES2015 and above, using array destructuring:
const arr = [42, 555, 666, 777]
const [first] = arr
console.log(first)
var ary = ['first', 'second', 'third', 'fourth', 'fifth'];
alert(Object.values(ary)[0]);
Use this to split character in javascript.
var str = "boy, girl, dog, cat";
var arr = str.split(",");
var fst = arr.splice(0,1).join("");
var rest = arr.join(",");
The previous examples work well when the array index begins at zero. thomax's answer did not rely on the index starting at zero, but relied on Array.prototype.find
to which I did not have access. The following solution using jQuery $.each worked well in my case.
let haystack = {100: 'first', 150: 'second'},
found = null;
$.each(haystack, function( index, value ) {
found = value; // Save the first array element for later.
return false; // Immediately stop the $.each loop after the first array element.
});
console.log(found); // Prints 'first'.
You can do it by lodash _.head
so easily.
var arr = ['first', 'second', 'third', 'fourth', 'fifth'];
console.log(_.head(arr));
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.min.js"></script>
Just use ary.slice(0,1).pop();
In
var ary = ['first', 'second', 'third', 'fourth', 'fifth'];
console.log("1º "+ary.slice(0,1).pop());
console.log("2º "+ary.slice(0,2).pop());
console.log("3º "+ary.slice(0,3).pop());
console.log("4º "+ary.slice(0,4).pop());
console.log("5º "+ary.slice(0,5).pop());
console.log("Last "+ary.slice(-1).pop());
array.slice(START,END).pop();
Another one for those only concerned with truthy elements
ary.find(Boolean);
@NicoLwk You should remove elements with splice, that will shift your array back. So:
var a=['a','b','c'];
a.splice(0,1);
for(var i in a){console.log(i+' '+a[i]);}
Declare a prototype to get first array element as:
Array.prototype.first = function () {
return this[0];
};
Then use it as:
var array = [0, 1, 2, 3];
var first = array.first();
var _first = [0, 1, 2, 3].first();
Or simply (:
first = array[0];
If you're chaining a view functions to the array e.g.
array.map(i => i+1).filter(i => i > 3)
And want the first element after these functions you can simply add a .shift()
it doesn't modify the original array
, its a nicer way then array.map(i => i+1).filter(=> i > 3)[0]
If you want the first element of an array without modifying the original you can use array[0]
or array.map(n=>n).shift()
(without the map you will modify the original. In this case btw i would suggest the ..[0]
version.
var ary = ['first', 'second', 'third', 'fourth', 'fifth'];
console.log(Object.keys(ary)[0]);
객체 배열 ( req
)을 만든 다음 Object.keys(req)[0]
객체 배열에서 첫 번째 키를 선택하기 만하면 됩니다.
@thomax의 대답은 꽤 좋지만 배열의 첫 번째 요소가 false 또는 false-y (0, 빈 문자열 등)이면 실패합니다. 정의되지 않은 것 이외의 것에 대해서만 true를 반환하는 것이 좋습니다.
const arr = [];
arr[1] = '';
arr[2] = 'foo';
const first = arr.find((v) => { return (typeof v !== 'undefined'); });
console.log(first); // ''
ES6 쉬움 :
let a = []
a[7] = 'A'
a[10] = 'B'
let firstValue = a.find(v => v)
let firstIndex = a.findIndex(v => v)
참고 URL : https://stackoverflow.com/questions/4090491/how-to-get-the-first-element-of-an-array
'IT story' 카테고리의 다른 글
안드로이드에서 그라디언트 배경을 만드는 법 (0) | 2020.05.12 |
---|---|
문자열에서 모든 특수 문자를 제거합니다. (0) | 2020.05.12 |
C ++ 표준은 iostream의 성능 저하를 요구합니까, 아니면 구현이 좋지 않은 경우에만 처리합니까? (0) | 2020.05.12 |
PostgreSQL과 같은 데이터베이스에서 RabbitMQ와 같은 메시지 브로커가 필요한 이유는 무엇입니까? (0) | 2020.05.12 |
Webpack을 사용하여 vue.js 프로젝트에서 at ( '@') 로그인 경로를 사용하여 ES6 가져 오기 (0) | 2020.05.12 |