Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/435.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 是否获取数组的倒数第二项?_Javascript_Jquery_Arrays - Fatal编程技术网

Javascript 是否获取数组的倒数第二项?

Javascript 是否获取数组的倒数第二项?,javascript,jquery,arrays,Javascript,Jquery,Arrays,如何获取数组中的最后一秒项 比如说, var fragment = '/news/article-1/' var array_fragment = fragment.split('/'); var pg_url = $(array_fragment).last()[0]; 这将返回一个空值。但是我想得到article-1 谢谢。并非所有事情都必须使用jQuery完成 在普通的旧javascript中,您可以执行以下操作: var pg_url = array_fragment[array_fr

如何获取数组中的最后一秒项

比如说,

var fragment = '/news/article-1/'
var array_fragment = fragment.split('/');
var pg_url = $(array_fragment).last()[0];
这将返回一个空值。但是我想得到
article-1


谢谢。

并非所有事情都必须使用jQuery完成

在普通的旧javascript中,您可以执行以下操作:

var pg_url = array_fragment[array_fragment.length - 2]
更简单更快:)


array_fragment不是jquery变量,它是一个普通的老javascript变量,因此不需要$()

看起来您也可以使用javascript的
slice
方法:

var path = 'a/b/c/d';
path.split('/').slice(-2, -1)[0]; // c
您还可以将“数组中倒数第二个元素”视为“数组中倒数第二个元素”:


如果经常需要反向访问数组,而不仅仅是倒数第二个索引,那么可以使用对原型的简单扩展

当扩展与阵列原型一样大的对象时,请确保不会影响其使用的任何其他部分。这是通过确保属性不可枚举来实现的,以便
for in
不会阻塞其他任何地方(有些人和库使用
for in
来迭代数组)

Object.defineProperty(Array.prototype,'rev'{
可枚举:false,
值:函数(索引){
返回此[this.length-1-索引];
}
});
文件编写([1,2,3,4,5,6].rev(1))步骤1:使用split()方法将元素拆分为数组

var fragment_arr = fragment.split("/");
var lastTwo = fragment_arr.slice(-2);
步骤2:使用切片(-2)方法从数组中选择最后2个元素,即从数组末尾选择的负数

var fragment_arr = fragment.split("/");
var lastTwo = fragment_arr.slice(-2);
步骤3:
lastwo
数组包含
fragment\u arr
的最后两个元素,现在您可以这样访问

var element = lastTwo[0];
alert(element);
简短回答:您可以将第2步和第3步结合起来,如下所示

var element = fragment_arr.slice(-2)[0];
alert(element);

以下内容适用于包含第n个“url”部分的字符串

var fragment = '/t/e/s/t/i/n/g/';
var fragment = '/t/';
如果片段长度可变,则需要一种适用于各种片段大小的解决方案

var fragment = '/news/article-1/';
var array_fragment = fragment.split('/');
Split分离找到“/”的片段字符串。Split获取分割字符前后的值。在本例中,在第一个斜杠之前或最后一个斜杠之后没有任何内容。空值将添加到第一个和最后一个数组位置的数组_片段中

jQuery
var pg_url = $(array_fragment)[$(array_fragment).length - 2];

javascript
var pg_url = array_fragment[array_fragment.length - 2];
如您所见,此解决方案不需要jQuery

Array_fragment.length-2计算数组_片段的长度,并从末尾选择第二项。最后一个值为“”,因为拆分(“/”)将一个空值添加到数组\u片段数组的末尾

简化并综合起来:

var f = '/t/e/s/t/i/n/g/'.split('/');
f[f.length - 2]
然后

或:


这个问题由来已久,但仍然相关。长度为-1的切片是最好的选择,但作为下划线/lodash的替代方案:

_.initial()获取除最后一个之外的所有内容

_.last()获取最后一个

所以你可以

_.last(_.initial([1,2,3,4])) 
或链接:

_.chain([1,2,3,4])
 .initial()
 .last()
 .value();
这给了你3分

或在原问题中:

var fragment = '/news/article-1/'
var array_fragment = fragment.split('/');
var pg_url = _.chain(array_fragment).initial().last().value();

这可由lodash覆盖:

var fragment='/news/article-1/'
var数组_fragment=u.split(fragment,“/”);
var second\u last=\uu.nth(数组\u片段,-2);
console.log(倒数第二个)
答案是[3]。您只需提及slice的开始和结束。

arr.at(-2)将执行以下操作-它返回数组中的最后一秒项

var fragment_arr = fragment.split("/");
var lastTwo = fragment_arr.slice(-2);

at()
方法接受一个正整数或负整数,并返回该索引处的项。负整数从数组中的最后一项开始倒数

文件:


注:实验特性!如果array_fragment.length==1@James:失败为“不返回任何内容”,或失败为错误?当我测试它时,它只返回
undefined
@James它实际上并没有失败。。。当您访问数组中未编入索引的元素时,默认行为是返回
未定义的
(例如
[1,2,3][10]===[1,2,3][1]
)此方法的问题是您无法将其链接起来:
'a/b/c/d'。拆分('/')。切片(-2,-1)[0]===='c'
,如果您的答案只是“尝试一下”,它就不是答案。这是一个评论。若要写出有用的答案,请添加说明。这并不提供问题的答案。若要评论或要求作者澄清,请在其帖子下方留下评论。-@张丹妮-我想,我更新了你的期望,我学会了如何给出答案。谢谢你在这里的回答已经涵盖了你的答案。。。它实际上更简单、更详细,因为它使用slice的第二个参数为数组只包含倒数第二个元素,而不声明其他变量(例如
[1,2,3]。slice(-2,-1)[0]==2
),这只是一个建议,但看起来更具可读性:倒数第二:
path.split('/').slice(-2).reverse().pop()
third last:
path.split('/').slice(-3).reverse().pop()
third last:
path.split('/').slice(-4).reverse().pop()
_.chain([1,2,3,4])
 .initial()
 .last()
 .value();
var fragment = '/news/article-1/'
var array_fragment = fragment.split('/');
var pg_url = _.chain(array_fragment).initial().last().value();
var a = [1,2,3,4];
var b = a.slice(-2,-1);
console.log(b);
const arr = [1,2,3,4];
arr.at(-2); // Returns 3