获取数组中的第一个元素
你如何从数组中获得第一个元素:
var ary = ['first', 'second', 'third', 'fourth', 'fifth'];
我试过这个:
alert($(ary).first());
但它会返回[object Object]
。
所以我需要从数组中获取第一个元素,它应该是元素的first
元素。
像这样
alert(ary[0])
为什么你jQuery-ifying一个vanilla JavaScript数组? 使用标准JavaScript!
var ary = ['first', 'second', 'third', 'fourth', 'fifth']; alert(ary[0]);
https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array
也,
来源 ,礼貌的bobince
如果已删除第一个元素,则索引0的元素可能不存在
在浏览器控制台中certificate:
var a=['a','b','c']; delete a[0]; for(var i in a){console.log(i+' '+a[i]);}
更好的方法来获得没有jQuery的第一个元素:
function first(p){for(var i in p)return p[i];} first(a);
如果要保留可读性 ,可以始终向Array.protoype
添加第一个函数:
Array.prototype.first = function () { return this[0]; };
那么你可以轻松找回第一个元素:
[1, 2, 3].first(); > 1
您可以使用shift()方法获取第一个项目,但要小心这个方法修改原始数组(删除第一个项目并返回它)。 因此,arrays的长度减少了一个。 此方法可用于您只需要获取第一个元素的内联案例,但您不关心原始数组。
yourArray.shift()
使用ES6解构
let [first] = [1,2,3];
哪个是一样的
let first = [1,2,3][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”返回匹配filter的第一个元素&& !!e
匹配任何元素。
注意仅当第一个元素不是“Falsy”时才有效: null
, false
, NaN
, ""
, 0
, undefined
尝试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;
当存在多个匹配时,JQuery的.first()用于获取与给予jquery的css选择器匹配的第一个DOM元素。
你不需要jQuery来操作javascript数组。
使用filter查找数组中的第一个元素:
function first(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:
在打字稿中:
function indexOf(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; }
你也可以使用.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'.
@NicoLwk您应该使用拼接删除元素,这会将您的arrays移回。 所以:
var a=['a','b','c']; a.splice(0,1); for(var i in a){console.log(i+' '+a[i]);}
用它来分割javascript中的字符。
var str = "boy, girl, dog, cat"; var arr = str.split(","); var fst = arr.splice(0,1).join(""); var rest = arr.join(",");
声明一个原型来获取第一个数组元素:
Array.prototype.first = function () { return this[0]; };
然后用它作为:
var array = [0, 1, 2, 3]; var first = array.first(); var _first = [0, 1, 2, 3].first();
或者干脆(:
first = array[0];
如果你将视图函数链接到数组,例如
array.map(i => i+1).filter(i => i > 3)
并且想要在这些函数之后的第一个元素你可以简单地添加一个.shift()
它不会修改原始array
,它更好的方式是array.map(i => i+1).filter(=> i > 3)[0]
如果你想要数组的第一个元素而不修改原文,你可以使用array[0]
或array.map(n=>n).shift()
(没有地图你会修改原文。在这种情况下顺便说一下我会建议..[0]
版本。
var ary = ['first', 'second', 'third', 'fourth', 'fifth']; console.log(Object.keys(ary)[0]);
创建任何Object数组( req
),然后只需执行Object.keys(req)[0]
来选择Object数组中的第一个键。
@thomax的答案非常好,但如果数组中的第一个元素为false或false-y(0,空字符串等),则会失败。 最好只为undefined返回true:
const arr = []; arr[1] = ''; arr[2] = 'foo'; const first = arr.find((v) => { return (typeof v !== 'undefined'); }); console.log(first); // ''
为什么不考虑数组可能为空的时间?
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
ES6简单:
let a = [] a[7] = 'A' a[10] = 'B' let firstValue = a.find(v => v) let firstIndex = a.findIndex(v => v)