【问题标题】:Javascript lodash range on array of JSON objects not returningJSON对象数组上的Javascript lodash范围未返回
【发布时间】:2017-06-15 08:50:09
【问题描述】:

所以在 lodash 文档中,这就是我对范围的理解,_.range(start, end)

因此,如果我在 JSON 对象数组上使用 .range()。喜欢...

const arr = [
  {
    name: 'name',
  },
];

假设我有 20 个对象,我做了 arr._.range(5, 5); 我会取回第 5 个 JSON 对象,然后从那里取回 5 个。

所以我创建了一个映射函数,它返回一个 JSON 对象列表,然后我在它们上使用 range,这就是我所拥有的:

import R from 'lodash';
const getJsonData = (offset, limit) => (
  R.map([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], x => ({
    title: `title ${x}`,
    subtitle: 'description',
    image_url: 'http://some-img-url.com',
    date: 'date',
    tag: 'tag',
    places: [
      {
        places: 'places',
      },
    ],
  }), R.range(offset, (limit + offset)))
);

所以我会这样称呼它getJsonData(5, 5);,但它仍然会返回 20 个 JSON 对象的完整列表。

我是否误解了range 的工作原理?

【问题讨论】:

标签: javascript arrays json lodash


【解决方案1】:

你得到的结果是正确的。

来自lodashmap 函数不接受第三个参数。

所以range 调用不被考虑在内。

https://lodash.com/docs/4.17.4#map

所以,我建议你像这样使用slice 函数:

import R from 'lodash';
const getJsonData = (offset, limit) => (
    R.slice(
        R.map([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], x => ({
            title: `title ${x}`,
            subtitle: 'description',
            image_url: 'http://some-img-url.com',
            date: 'date',
            tag: 'tag',
            places: [
                {
                    places: 'places',
                },
            ],
        }))
    , offset, limit + offset)
);

【讨论】:

  • 啊,好吧,我明白了。所以我真正需要做的。完全返回完整数组,然后在其上调用.range。我会试试看:)
  • 您可以slice 完整数组。我添加了一个示例。
  • 真棒干杯老兄!是的,我是个白痴:) 我会接受你的回答。但有一件事,offset, limit + offsetslice 之外。所以更新将是})), offset, limit + offset, ), );
  • 谢谢。我编辑了答案以纠正括号的错位。
猜你喜欢
  • 2013-08-12
  • 2017-07-11
  • 1970-01-01
  • 1970-01-01
  • 2016-06-16
  • 2018-04-11
  • 1970-01-01
  • 1970-01-01
  • 2019-10-27
相关资源
最近更新 更多