回答:
このような
alert(ary[0])
var a = []; a[7] = 'foo'; alert(a[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()
知っておくべき重要なことは、上記の2つは、配列が[0]インデックスで始まる場合のオプションにすぎないということです。
たとえば、yourArray [0]を削除して最初の要素が削除され、配列に「穴」が残る場合があります。ここで、[0]の要素は単に未定義ですが、最初の「既存の」要素を取得したいとします。私はこれについて多くの実世界の事例を見てきました。
したがって、配列と最初のキーの知識がない(または穴があることがわかっている)と仮定しても、最初の要素を取得できます。
find()を使用して、最初の要素を取得できます。
find()の利点は、条件を満たす最初の値に達したときにループを終了するときの効率です(これについては以下で詳しく説明します)。(条件をカスタマイズして、nullまたは他の空の値を除外することもできます)
var firstItem = yourArray.find(x=>x!==undefined);
また、最初にコピーの配列を「修正」し、元の配列をそのまま(変更なし)に保ちながら最初の要素を取得するオプションとして、filter()をここに含めたいと思います。
ここにfilter()を含めるもう1つの理由は、find()より前に存在し、多くのプログラマーが既にそれを使用しているためです(find()がES6であるのに対してES5です)。
var firstItem = yourArray.filter(x => typeof x!==undefined).shift();
filter()は実際には効率的な方法ではなく(filter()はすべての要素を実行する)、別の配列を作成することを警告します。たとえばforEachの使用に近いほど、パフォーマンスへの影響はわずかなので、小さなアレイで使用することは問題ありません。
(私は何人かの人々は最初の要素を取得するために、ループの中で...のために使用することをお勧めしますが、私はこの方法に対して推薦見るため...インデックスの順序が重要である配列を反復するために使用すべきではありませんで、それはdoesnのために」ブラウザーはほとんどの順序を尊重すると主張できますが、tは順序を保証します。ループし、キー/値をチェックする
find()とfilter()はどちらも要素の順序を保証するため、上記のように使用しても安全です。
yourArray.map(n=>n).shift()
すると、元のアイテムを変更せずに最初のアイテムが返されます...それが最善の方法かどうかはわかりませんが、.map()。filter()。some()。shift()で配列をチェーンする場合は問題ありません..それ以外の場合は使用しますyourArray[0]
最初の要素が削除されている場合、インデックス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
.first()
てい[0]
ます、タイプすることは行うよりも優れていますか?
1
。first
その場合は明確です。
あなたはただ使うことができますfind()
:
let first = array.find(Boolean);
または、最初の要素が間違っていても必要な場合:
let first = array.find(e => true);
さらに一歩進む:
読みやすさを重視するが、数値の発生率に依存したくない場合は、組み込みのArrayオブジェクトプロトタイプを直接変更することの落とし穴を軽減するように定義することにより、- first()
関数を追加できます(ここで説明します)。Array.protoype
Object.defineProperty()
パフォーマンスはかなり良好です(find()
最初の要素の後で停止します)が、完璧ではなく、普遍的にアクセスできるわけでもありません(ES6のみ)。詳細については、@ Selaysの回答をご覧ください。
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() );
first()
配列がインデックス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'
!!element
偽の値をスキップするので、使用しないことをお勧めします。私find()
はこのように使用することをお勧めします:sparse.find((_, index, array) => index in array);
array.find(e => !!e); // return the first element
「検索」は、フィルタに一致する最初の要素を返します&& !!e
任意の要素に一致します。
なお、 最初の要素は「Falsy」でない場合にのみ動作します:null
、false
、NaN
、""
、0
、undefined
array.find(() => true);
どうですか?これにより[false].find(() => true)
、同様に行うことができます。
.find(value => true)
ちょうど期待どおりに動作し...正直なところ、あなたがクリーンなコードとtypescriptですでタイピングを保つためにしたい場合は、使用される非構造を。
underscore.js(http://underscorejs.org/)を使用している場合のみ、次のことができます。
_.first(your_array);
他の言語から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
配列で動作するメソッド、およびオブジェクトでも動作します(オブジェクトには順序が保証されていないことに注意してください)。
元の配列は変更されないため、私はこの方法を最も好みます。
// 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;
ES2015以降では、配列の分解を使用します。
const arr = [42, 555, 666, 777]
const [first] = arr
console.log(first)
フィルターを使用して配列の最初の要素を検索します。
typescriptの場合:
function first<T>(arr: T[], filter: (v: T) => boolean): T {
let result: T;
return arr.some(v => { result = v; return filter(v); }) ? result : undefined;
}
プレーンなJavaScriptでは:
function first(arr, filter) {
var result;
return arr.some(function (v) { result = v; return filter(v); }) ? result : undefined;
}
同様に、indexOf:
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;
}
プレーンなJavaScriptでは:
function indexOf(arr, filter) {
var result;
return arr.some(function (v, i) { result = i; return filter(v); }) ? result : undefined;
}
使うだけ ary.slice(0,1).pop();
に
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();
ary[0]
か?
.get(0)を使用することもできます。
alert($(ary).first().get(0));
配列の最初の要素を取得します。
前の例は、配列インデックスがゼロから始まる場合にうまく機能します。thomaxの答えは、ゼロから始まるインデックスに依存してArray.prototype.find
いませんでしたが、私がアクセスできないものに依存していました。jQuery $ .eachを使用する次のソリューションは、私の場合うまくいきました。
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'.
次の方法でそれを行うことができますlodash _.head
そう簡単。
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>
var ary = ['first', 'second', 'third', 'fourth', 'fifth'];
console.log(Object.keys(ary)[0]);
Object配列(req
)を作成し、Object配列Object.keys(req)[0]
の最初のキーを選択するだけです。
ES6簡単:
let a = []
a[7] = 'A'
a[10] = 'B'
let firstValue = a.find(v => v)
let firstIndex = a.findIndex(v => v)
[false, 0, null, undefined, '', 'last'].find(v => v)
a.find(value => true)
値は無視されません。それでも、findを使用して最初のアイテムを取得することはお勧めしません。