Mac*_*Mac 201 javascript arrays jquery
你如何从数组中获得第一个元素:
var ary = ['first', 'second', 'third', 'fourth', 'fifth'];
Run Code Online (Sandbox Code Playgroud)
我试过这个:
alert($(ary).first());
Run Code Online (Sandbox Code Playgroud)
但它会回来[object Object].
所以我需要从数组中获取应该是元素的第一个元素'first'.
Joh*_*ock 306
像这样
alert(ary[0])
Run Code Online (Sandbox Code Playgroud)
Mat*_*all 197
为什么你jQuery-ifying一个vanilla JavaScript数组?使用标准JavaScript!
var ary = ['first', 'second', 'third', 'fourth', 'fifth'];
alert(ary[0]);
Run Code Online (Sandbox Code Playgroud)
https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array
Sel*_*lay 74
您可以使用shift()方法获取第一个项目,但要小心这个方法修改原始数组(删除第一个项目并返回它).因此,阵列的长度减少了一个.此方法可用于您只需要获取第一个元素的内联案例,但您不关心原始数组.
yourArray[0]
Run Code Online (Sandbox Code Playgroud)
小智 51
如果已删除第一个元素,则索引0的元素可能不存在
在浏览器控制台中证明它:
let a = ['a', 'b', 'c'];
delete a[0];
for (let i in a) {
console.log(i + ' ' + a[i]);
}Run Code Online (Sandbox Code Playgroud)
更好的方法来获得没有jQuery的第一个元素:
function first(p) {
for (let i in p) return p[i];
}
console.log( first(['a', 'b', 'c']) );Run Code Online (Sandbox Code Playgroud)
eli*_*ocs 43
如果要保留可读性,可以始终将第一个函数添加到Array.protoype:
Array.prototype.first = function () {
return this[0];
};
Run Code Online (Sandbox Code Playgroud)
那么你可以轻松找回第一个元素:
[1, 2, 3].first();
> 1
Run Code Online (Sandbox Code Playgroud)
Fla*_*ken 40
使用ES6解构
let [first] = [1,2,3];
Run Code Online (Sandbox Code Playgroud)
哪个是一样的
let first = [1,2,3][0];
Run Code Online (Sandbox Code Playgroud)
tho*_*max 19
如果不保证从索引零填充数组,则可以使用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'
Run Code Online (Sandbox Code Playgroud)
Abd*_*UMI 13
array.find(e => !!e); // return the first element
Run Code Online (Sandbox Code Playgroud)
因为"find"返回匹配过滤器的第一个元素&& !!e匹配任何元素.
注意: 这只能当第一个元素是不是"Falsy": ,null,false,NaN,,""0undefined
leo*_*ess 13
您可以这样做:
let first = array.find(e => true);
Run Code Online (Sandbox Code Playgroud)
或者,如果您只关心真实的元素(可能是您想要的元素):
let first = array.find(Boolean);
Run Code Online (Sandbox Code Playgroud)
关心可读性而不是依靠数字发生率我添加了一个first()-function到Array.protoype通过定义它与Object?.define?Property()其中减轻修改的陷阱内置Array对象原型直接(说明如下)。
性能相当不错(find()在第一个元素之后停止),但它并不完美或无法普遍访问(仅适用于ES6)。有关更多背景信息,请阅读@Selays答案。
Object.defineProperty(Array.prototype, 'first', {
value() {
return this.find(e => true); // or this.find(Boolean)
}
});
Run Code Online (Sandbox Code Playgroud)
然后,可以检索第一个元素:
let array = ['a', 'b', 'c'];
array.first();
> 'a'
Run Code Online (Sandbox Code Playgroud)
摘录以查看实际效果:
let first = array.find(e => true);
Run Code Online (Sandbox Code Playgroud)
在 ES2015 及以上版本中,使用数组解构:
const arr = [42, 555, 666, 777]
const [first] = arr
console.log(first)Run Code Online (Sandbox Code Playgroud)
小智 8
我更喜欢使用数组解构
const [first, second, third] = ["Laide", "Gabriel", "Jets"];
console.log(first); // Output: Laide
console.log(second); // Output: Gabriel
console.log(third); // Output: Jets
Run Code Online (Sandbox Code Playgroud)
只有在你使用underscore.js(http://underscorejs.org/)的情况下,你才能做到:
_.first(your_array);
Run Code Online (Sandbox Code Playgroud)
我知道从其他语言到JavaScript的人们都在寻找类似的东西head()或first()获取数组的第一个元素,但是如何做到这一点呢?
假设您有以下数组:
const arr = [1, 2, 3, 4, 5];
Run Code Online (Sandbox Code Playgroud)
在JavaScript中,您可以简单地执行以下操作:
const first = arr[0];
Run Code Online (Sandbox Code Playgroud)
或更整洁的新方法是:
const [first] = arr;
Run Code Online (Sandbox Code Playgroud)
但是你也可以简单地写一个像... 的函数
function first(arr) {
if(!Array.isArray(arr)) return;
return arr[0];
}
Run Code Online (Sandbox Code Playgroud)
如果使用下划线,则可以使用功能列表执行与您期望的功能相同的操作:
_.first
_.head
_.take
Run Code Online (Sandbox Code Playgroud)
使用数组的方法,它也适用于对象(注意,对象没有保证的顺序!).
我最喜欢这种方法,因为原始数组没有被修改.
// 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;
Run Code Online (Sandbox Code Playgroud)
只需使用ary.slice(0,1).pop();
在
\n\nvar ary = [\'first\', \'second\', \'third\', \'fourth\', \'fifth\'];\r\n\r\nconsole.log("1\xc2\xba "+ary.slice(0,1).pop());\r\nconsole.log("2\xc2\xba "+ary.slice(0,2).pop());\r\nconsole.log("3\xc2\xba "+ary.slice(0,3).pop());\r\nconsole.log("4\xc2\xba "+ary.slice(0,4).pop());\r\nconsole.log("5\xc2\xba "+ary.slice(0,5).pop());\r\nconsole.log("Last "+ary.slice(-1).pop());Run Code Online (Sandbox Code Playgroud)\r\narray.slice(START,END).pop();
\n使用过滤器查找数组中的第一个元素:
在打字稿中:
function first<T>(arr: T[], filter: (v: T) => boolean): T {
let result: T;
return arr.some(v => { result = v; return filter(v); }) ? result : undefined;
}
Run Code Online (Sandbox Code Playgroud)
在普通的javascript中:
function first(arr, filter) {
var result;
return arr.some(function (v) { result = v; return filter(v); }) ? result : undefined;
}
Run Code Online (Sandbox Code Playgroud)
同样,indexOf:
在打字稿中:
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;
}
Run Code Online (Sandbox Code Playgroud)
在普通的javascript中:
function indexOf(arr, filter) {
var result;
return arr.some(function (v, i) { result = i; return filter(v); }) ? result : undefined;
}
Run Code Online (Sandbox Code Playgroud)
ES6 Spread operator + .shift() 解决方案
使用myArray.shift()您可以获得数组的第一个元素,但.shift()会修改原始数组,因此为避免这种情况,首先您可以创建数组的副本,[...myArray]然后将 应用于.shift()此副本:
var myArray = ['first', 'second', 'third', 'fourth', 'fifth'];
var first = [...myArray].shift();
console.log(first);Run Code Online (Sandbox Code Playgroud)