如何从这样的数组中获取第一个元素:

var ary = ['first', 'second', 'third', 'fourth', 'fifth'];

我试了一下:

alert($(ary).first());

但它会返回[object object]。所以我需要从数组中获取第一个元素它应该是元素first。


当前回答

你可以使用find():

const first = array.find(Boolean)

或者如果你想要第一个元素,即使它是假的:

const first = array.find(() => true)

或者如果你想要第一个元素,即使它是假的,但如果它是空的或未定义的(更多信息):

const first = array.find(e => typeof e !== 'undefined')



加倍努力:

如果你关心可读性,但不想依赖于数值,你可以向Array添加一个first()函数。通过Object .define Property()来定义它,这减轻了直接修改内置Array对象原型的缺陷(在这里解释)。

性能非常好(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', { 值(){ 返回this.find(布尔) } }) Console.log (['a', 'b', 'c'].first())

其他回答

如果你想保持可读性,你可以在array . prototype中添加第一个函数:

Array.prototype.first = function () {
    return this[0];
};

A,那么你可以很容易地检索第一个元素:

[1, 2, 3].first();
> 1

ES6扩展运算符+ .shift()解决方案

使用myArray.shift()可以获得数组的第一个元素,但.shift()将修改原始数组,因此为了避免这种情况,首先可以使用[…]创建一个数组的副本。myArray],然后应用.shift()到这个副本:

var myArray = ['first', 'second', 'third', 'fourth', 'fifth']; var first =[…myArray].shift(); console.log(第一);

我知道从其他语言学习到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

如果你的数组不能保证从索引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'

方法,它适用于数组,也适用于对象(注意,对象没有保证的顺序!)。

我最喜欢这个方法,因为原始数组没有被修改。

// 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;