0

我正在制作照片库/灯箱,并正在使用 graphql 来管理图片。

我在一个文件夹中有 10 张照片:“1- 图片.png”、“2- 其他东西的图​​片.png”、“3-...”、...、“10- 我的最后一张图片.png”

我正在使用以下代码段按升序排序,

export const query = graphql`
  query($gallery: String!) {
    allFile(
      filter: {
        sourceInstanceName: { eq: "galleries" }
      absolutePath: { glob: $gallery }
      }
      sort: { fields: name, order: ASC }
    ) {
      nodes {
        name
        childImageSharp {
          fluid(maxWidth:1920, quality:90) {
            ...GatsbyImageSharpFluid
          }
        }
      }
    }
  }
`

但输出顺序是“1- 图片.png”、“10- 我的最后一张图片.png”、“2- 其他东西的图​​片.png”、...

有没有一种智能的方法可以按字符串开头的数字进行排序?我能想到的最简单的方法是将 1-9 文件重命名为“01-...png”,但我正在尝试对包含 5-150 张照片的数千个文件夹实施此操作,所有这些都使用“1-”命名惯例。

如何对这些照片进行排序,以使“9- Some name.png”列在“10- My last picture.png”之前?

4

2 回答 2

1

我遇到了同样的问题,从技术上讲,11 在 2 之前,因为排序是按字母顺序排列的,而 1 在 2 之前。排序是基于第一个字符,然后是后面的字符,如果它在排序中需要它的话。

解决方案是重命名1-901-090 在 1 之前的方式。

于 2021-02-18T16:25:06.720 回答
0

我无法通过查询对结果进行排序,但我决定通过对结果对象数组进行排序来按字符串中的数字排序同样的问题:

queryResult.sort(function(a,b){
  return Number(b.PriceString) - Number(a.PriceString);
});
于 2021-07-22T00:09:14.967 回答