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

bie*_*ier 5 javascript arrays lodash

我有一个这样的对象数组:

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}
]
Run Code Online (Sandbox Code Playgroud)

尝试切片前2,然后第2 2等

我怎么能在当时切2本书呢?

Mam*_*mun 7

Array.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);
}
Run Code Online (Sandbox Code Playgroud)


Kou*_*jee 1

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

_.chunk(books, 2)
Run Code Online (Sandbox Code Playgroud)

这是一个工作示例:

_.chunk(books, 2)
Run Code Online (Sandbox Code Playgroud)
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);
Run Code Online (Sandbox Code Playgroud)

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