如何从js中的对象数组中切片?

新手上路,请多包涵

我有一组这样的对象:

 const books =[
{id: "1", name: "twilight", category: "Movies", price: 10},
{id: "2", name: "jaws", category: "Movies", price: 22},
{id: "3", name: "the shining", category: "Movies", price: 1},
{id: "4", name: "beers", category: "Movies", price: 10},
{id: "5", name: "apples", category: "Movies", price: 22},
{id: "6", name: "mono", category: "Movies", price: 1}
]

尝试切片前 2 个,然后是第二个 2 等。

我怎样才能同时切分 2 本书?

原文由 bier hier 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 591
2 个回答

由于您使用的是 lodash ,您可以使用 _.chunk ( lodash#chunk ) 来填充包含前 2 个,然后是第二个 2,依此类推的数组……

 _.chunk(books, 2)

这是一个工作示例:

 const books = [
    {id: "1", name: "twilight", category: "Movies", price: 10},
    {id: "2", name: "jaws", category: "Movies", price: 22},
    {id: "3", name: "the shining", category: "Movies", price: 1},
    {id: "4", name: "beers", category: "Movies", price: 10},
    {id: "5", name: "apples", category: "Movies", price: 22},
    {id: "6", name: "mono", category: "Movies", price: 1}
  ],
  res = _.chunk(books, 2);

console.log(res);
 <script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.min.js"></script>

现在,您有了分块数组,迭代并一项一项地获取您所需要的!

原文由 Koushik Chatterjee 发布,翻译遵循 CC BY-SA 4.0 许可协议

数组.prototype.slice()

slice() 方法将数组的一部分的浅表副本返回到从开始到结束(不包括结束)选择的新数组对象中。原始数组不会被修改。

尝试使用 for 循环,每次迭代增量为 2。将 i 的当前值作为 起始 位置, i+2 当前 值作为方法参数传递:

 const books =[
  {id: "1", name: "twilight", category: "Movies", price: 10},
  {id: "2", name: "jaws", category: "Movies", price: 22},
  {id: "3", name: "the shining", category: "Movies", price: 1},
  {id: "4", name: "beers", category: "Movies", price: 10},
  {id: "5", name: "apples", category: "Movies", price: 22},
  {id: "6", name: "mono", category: "Movies", price: 1}
]

for(var i=0; i<books.length; i+=2){
  var sliced = books.slice(i, i+2);
  console.log(sliced);
}

原文由 Mamun 发布,翻译遵循 CC BY-SA 4.0 许可协议

推荐问题