你如何从这样的数组中获取第一个元素:
var ary = ['first', 'second', 'third', 'fourth', 'fifth'];
我试过这个:
alert($(ary).first());
但它会返回[object Object]
。所以我需要从数组中获取第一个元素,它应该是 element 'first'
。
你如何从这样的数组中获取第一个元素:
var ary = ['first', 'second', 'third', 'fourth', 'fifth'];
我试过这个:
alert($(ary).first());
但它会返回[object Object]
。所以我需要从数组中获取第一个元素,它应该是 element 'first'
。
像这样
alert(ary[0])
你为什么要用 jQuery 化一个普通的 JavaScript 数组?使用标准的 JavaScript!
var ary = ['first', 'second', 'third', 'fourth', 'fifth'];
alert(ary[0]);
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array
下面的一些方法针对不同的情况。
在大多数正常情况下,访问第一个元素的最简单方法是通过
yourArray[0]
但这需要您检查 [0] 是否确实存在。
在现实世界中,您不关心原始数组,也不想检查索引是否存在,只想获取第一个元素或未定义的内联元素。
在这种情况下,您可以使用shift()方法来获取第一个元素,但要注意此方法会修改原始数组(删除第一项并返回它)。因此数组的长度减一。此方法可用于内联情况,您只需要获取第一个元素,但不关心原始数组。
yourArray.shift()
要知道的重要一点是,如果您的数组以 [0] 索引开头,则上述两个只是一个选项。
在某些情况下,第一个元素已被删除,例如删除 yourArray[0] 使您的数组带有“孔”。现在 [0] 处的元素只是未定义,但您想获得第一个“现有”元素。我见过很多这样的现实世界案例。
所以,假设我们不知道数组和第一个键(或者我们知道有洞),我们仍然可以获得第一个元素。
您可以使用find()来获取第一个元素。
find() 的优点是它的效率,因为它在达到满足条件的第一个值时退出循环(更多信息见下文)。(您也可以自定义条件以排除空值或其他空值)
var firstItem = yourArray.find(x=>x!==undefined);
我还想在此处包含filter()作为首先“修复”副本中的数组的选项,然后在保持原始数组完整(未修改)的同时获取第一个元素。
在这里包含 filter() 的另一个原因是它存在于 find() 之前并且许多程序员已经在使用它(它是 ES5,而 find() 是 ES6)。
var firstItem = yourArray.filter(x => typeof x!==undefined).shift();
警告 filter() 并不是真正有效的方式(filter() 遍历所有元素)并创建另一个数组。可以在小型阵列上使用,因为性能影响很小,例如更接近于使用 forEach。
(我看到有些人建议使用 for...in 循环来获取第一个元素,但我建议不要使用这种方法for...in 不应该用于迭代索引顺序很重要的数组,因为它没有尽管您可以争辩说浏览器大多尊重顺序,但不保证顺序。顺便说一句,forEach 并没有像许多人建议的那样解决问题,因为您无法打破它并且它将贯穿所有元素。您最好使用简单的 for循环并通过检查键/值
find() 和 filter() 都保证元素的顺序,因此可以安全地使用如上。
使用 ES6 解构
let [first] = [1,2,3];
这与
let first = [1,2,3][0];
你可以只使用find()
:
const first = array.find(Boolean)
或者如果你想要第一个元素,即使它是假的:
const first = array.find(e => true)
加倍努力:
如果您关心可读性但不想依赖数字发生率,您可以通过定义它来添加一个first()
- 函数,Array.prototype
以Object.defineProperty()
减轻直接修改内置 Array 对象原型的陷阱(解释here)。
性能相当不错(find()
在第一个元素之后停止),但它并不完美或普遍可访问(仅限 ES6)。有关更多背景信息,请阅读@Selays 答案。
Object.defineProperty(Array.prototype, 'first', {
value() {
return this.find(e => true) // or this.find(Boolean)
}
})
要检索第一个元素,您现在可以执行以下操作:
const array = ['a', 'b', 'c']
array.first()
> 'a'
片段以查看它的运行情况:
Object.defineProperty(Array.prototype, 'first', {
value() {
return this.find(Boolean)
}
})
console.log( ['a', 'b', 'c'].first() )