如何获取数组 Node.js 中的最后一项? [复制]

Posted

技术标签:

【中文标题】如何获取数组 Node.js 中的最后一项? [复制]【英文标题】:How to get last item in array Node.js? [duplicate] 【发布时间】:2018-01-01 14:29:31 【问题描述】:

我是 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)) : []

    
  )
)

【问题讨论】:

【参考方案1】:

您的问题是您在map 中使用_.last。这将获得当前项目中的最后一个字符。您想获取实际 Array 的最后一个元素。

您可以使用pop() 执行此操作,但应注意它具有破坏性(将从数组中删除最后一项)。

无损原版解决方案:

var arr = ['thing1', 'thing2'];
console.log(arr[arr.length-1]); // 'thing2'

或者,lodash

_.last(event.images);

【讨论】:

我明白了,这是有道理的。但是当我想在 eventsToBeInserted 中获得结果时,我该怎么做呢? 你会做eventsTobeInserted.push(arr[arr.length-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

【讨论】:

这将删除该项目,所以他不应该。 @NikxDa 正确。没想到。谢谢指点。【参考方案3】:

虽然Array.prototype.pop 会检索数组的最后一个元素,但它也会从数组中删除该元素。所以应该将Array.prototype.popArray.prototype.slice 结合起来:

var images  =  ['jpg.item_1', 'jpg.item_2', 'jpg.item_3', 'jpg.item_n'];

console.log(images.slice(-1).pop());

【讨论】:

关于否决票的任何意见? :) 我这样做了:images: !! event.images ? event.images.map(image => image.url.slice(-1).pop()) : [],但现在我收到一条错误消息,提示 TypeError: image.url.slice(...).pop is not a function。不知道这意味着什么? @BjarkeAndersen,很可能是因为 event.images 数组的格式错误。确保 image.url 也是一个数组。我为你准备了一个小例子:jsfiddle.net/enzam28p 谢谢@Dmitriy Simushev

以上是关于如何获取数组 Node.js 中的最后一项? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何根据swift 3中的数组选择复选标记?

如何解决 Node.js 中的“请求过多”错误?

如何选择数组中的最后一项? [复制]

RestKit 仅保存响应数组中的最后一项

如何取消设置多维数组中的最后一项?

node.js & mysql - 如何获取最后插入的 ID?