我有这样的数据

const data = [
  {
    name: 'name1',
    id: 'id1'
  },
  {
    name: 'name2',
    id: 'id2'
  },
  {
    name: 'name3',
    id: 'id3'
  },
  {
    name: 'name4',
    id: 'id4'
  },
  {
    name: 'name5',
    id: 'id5'
  },
  {
    name: 'name6',
    id: 'id6'
  },
  {
    name: 'name7',
    id: 'id7'
  },
  {
    name: 'name8',
    id: 'id8'
  },

]

我需要将所有对象推送到 id3 (不包括 id3 )到一个数组中,然后将 id3id6 (不包括 id6 )推送到一个数组中,其余的东西放到另一个数组中。

id1id3 之间将添加任意数量的对象,但我们需要推送直到 id3 ,同样我们可以将对象数量添加到 id3id6

最后我尝试实现这样的目标
firstArr = [
   {
    name: 'name1',
    id: 'id1'
  },
  {
    name: 'name2',
    id: 'id2'
  }
]

secondArr = [
  {
    name: 'name3',
    id: 'id3'
  },
  {
    name: 'name4',
    id: 'id4'
  },
  {
    name: 'name5',
    id: 'id5'
  }
]

thirdArr = [
  {
    name: 'name6',
    id: 'id6'
  },
  {
    name: 'name7',
    id: 'id7'
  },
  {
    name: 'name8',
    id: 'id8'
  }
]

这里 id3id6 这样的顺序不会改变,所以我们可以以此为引用。

最佳答案

您可以使用 Array.slice()Array.findIndex() :

const id3Index = data.findIndex(obj => obj.id === 'id3');
const id6Index = data.findIndex(obj => obj.id === 'id6');
const arr1 = data.slice(0, id3Index);
const arr2 = data.slice(id3Index, id6Index);
const arr3 = data.slice(id6Index);

const data = [
  {
    name: 'name1',
    id: 'id1'
  },
  {
    name: 'name2',
    id: 'id2'
  },
  {
    name: 'name3',
    id: 'id3'
  },
  {
    name: 'name4',
    id: 'id4'
  },
  {
    name: 'name5',
    id: 'id5'
  },
  {
    name: 'name6',
    id: 'id6'
  },
  {
    name: 'name7',
    id: 'id7'
  },
  {
    name: 'name8',
    id: 'id8'
  },

]

const id3Index = data.findIndex(obj => obj.id === 'id3');
const id6Index = data.findIndex(obj => obj.id === 'id6');
console.log(data.slice(0, id3Index));
console.log(data.slice(id3Index, id6Index));
console.log(data.slice(id6Index));

关于javascript - 将对象拆分为特定的 id 字符串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55634412/

10-10 16:55