다음과 같이 배열에서 첫 번째 요소를 얻는 방법은 무엇입니까?
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를 사용하는 경우 성능에 미치는 영향이 미미하므로 소규모 어레이에서 사용하는 것이 좋습니다.
(나는 어떤 사람들은 첫 번째 요소를 얻기 위해 루프를 위해 … 사용하는 것이 좋습니다 볼 수 있지만, 나는이 방법에 대해 추천 을 위해 … 배열을 통해 반복 사용하지 않아야의 인덱스 순서가 중요한 경우 는 아무튼 때문에 ‘ 브라우저가 대부분의 순서를 존중한다고 주장 할 수는 있지만 순서를 보장하지는 않지만 forEach는 문제를 해결할 수 없기 때문에 많은 제안 된 문제를 해결하지 못하며 모든 요소를 통과하게됩니다. 루프 및 키 / 값 확인
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']) );
답변
ES6 파괴 사용
let [first] = [1,2,3];
어느 것과
let first = [1,2,3][0];
답변
가독성 을 유지하려면 항상 첫 번째 함수를 Array.protoype
:
Array.prototype.first = function () {
return this[0];
};
그런 다음 첫 번째 요소를 쉽게 검색 할 수 있습니다.
[1, 2, 3].first();
> 1
답변
당신은 그냥 사용할 수 있습니다 find()
:
let first = array.find(Boolean);
또는 거짓 인 경우 에도 첫 번째 요소를 원하는 경우 :
let first = array.find(e => true);
추가 마일로 이동 :
가독성에 관심이 있지만 숫자 발생에 의존하고 싶지 않다면 내장 Array 객체 프로토 타입을 직접 수정하는 함정을 완화시키는 기능 을 정의 first()
하여 추가 할 수 있습니다 ( 여기 설명 ).Array.protoype
Object.defineProperty()
성능은 꽤 좋지만 ( 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() );