我是node.js和JavaScript的新手,所以这个问题可能很简单,但我无法弄清楚。
我在阵列中有很多项目,但只想获得最后一项。我试图使用lodash,但它不知道我没有提供数组中的最后一项。
我的阵列现在看起来像这样:
images : ['jpg.item_1', 'jpg.item_2', 'jpg.item_3', ..., 'jpg.item_n']
我希望得到:
images : 'jpg.item_n'
使用lodash我得到了:
images : ['g.item_1', 'g.item_2', 'g.item_n']
看起来我刚刚收到jpg的最后一封信,即' g'。
我使用lodash的代码如下所示:
const _ = require('lodash');
return getEvents().then(rawEvents => {
const eventsToBeInserted = rawEvents.map(event => {
return {
images: !!event.images ? event.images.map(image => _.last(image.url)) : []
}
})
})

答案 0 :(得分:14)
您的问题是您在_.last
内使用map
。这将获得当前项目中的最后一个字符。您想获得实际Array
的最后一个元素。
您可以使用pop()
执行此操作,但应注意它是破坏性的(将删除数组中的最后一项)。
非破坏性香草溶液:
var arr = ['thing1', 'thing2'];
console.log(arr[arr.length-1]); // 'thing2'
或者lodash
:
_.last(event.images);
答案 1 :(得分:2)
使用.pop()
数组方法
var images = ['jpg.item_1', 'jpg.item_2', 'jpg.item_3', 'jpg.item_n'];
var index= images.length - 1; //Last index of array
console.log(images[index]);
//or,
console.log(images.pop())// it will remove the last item from array

答案 2 :(得分:0)
虽然Array.prototype.pop
检索数组的最后一个元素,但也会从数组中删除此元素。因此,应将Array.prototype.pop
与Array.prototype.slice
结合使用:
var images = ['jpg.item_1', 'jpg.item_2', 'jpg.item_3', 'jpg.item_n'];
console.log(images.slice(-1).pop());