Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript lodash-按嵌套项计数筛选集合_Javascript_Arrays_Object_Lodash - Fatal编程技术网

Javascript lodash-按嵌套项计数筛选集合

Javascript lodash-按嵌套项计数筛选集合,javascript,arrays,object,lodash,Javascript,Arrays,Object,Lodash,是否有任何简单的解决方案(vanilla js或lodash)按嵌套项计数过滤集合 例如,有以下分组集合: [ { Items: ['a', 'b', 'c'], Name: 'Group 1' }, { Items: ['d', 'e','f'], Name: 'Group 2' } ] 如果我需要带2件物品,它应该返回: [ { Items: ['a', 'b'], Name: 'Group 1' } ] [ {

是否有任何简单的解决方案(vanilla js或lodash)按嵌套项计数过滤集合

例如,有以下分组集合:

[
  {
    Items: ['a', 'b', 'c'],
    Name: 'Group 1'
  },
  {
    Items: ['d', 'e','f'],
    Name: 'Group 2'
  }
]
如果我需要带2件物品,它应该返回:

[
  {
    Items: ['a', 'b'],
    Name: 'Group 1'
  }
]
[
  {
    Items: ['a', 'b', 'c'],
    Name: 'Group 1'
  },
  {
    Items: ['d', 'e'],
    Name: 'Group 2'
  }
]
如果我需要购买5件物品,则应退还:

[
  {
    Items: ['a', 'b'],
    Name: 'Group 1'
  }
]
[
  {
    Items: ['a', 'b', 'c'],
    Name: 'Group 1'
  },
  {
    Items: ['d', 'e'],
    Name: 'Group 2'
  }
]

您需要迭代项目(在本例中为…的),并计算结果中的项目数+当前对象项目长度

如果它小于或等于所需的总数(
n
),则推送原始对象。如果更多,则对嵌套数组进行切片,以使其包含差异

如果当前计数等于或大于
n
(或者如果循环结束),则返回结果(
res

const fn=(arr,n,key)=>{
让计数=0
常数res=[]
用于(arr的常数){
常量len=o[键]。长度
res.push(计数+长度=n)返回res
}
返回res
}
const arr=[{“Items”:[“a”、“b”、“c”],“Name”:“group1”},{“Items”:[“d”、“e”、“f”],“Name”:“group2”}]
日志(fn(arr,2,'Items'))
日志(fn(arr,5,'Items'))

log(fn(arr,8,'Items'))
您需要迭代项目(在本例中为…of),并计算结果中的项目数+当前对象项目长度

如果它小于或等于所需的总数(
n
),则推送原始对象。如果更多,则对嵌套数组进行切片,以使其包含差异

如果当前计数等于或大于
n
(或者如果循环结束),则返回结果(
res

const fn=(arr,n,key)=>{
让计数=0
常数res=[]
用于(arr的常数){
常量len=o[键]。长度
res.push(计数+长度=n)返回res
}
返回res
}
const arr=[{“Items”:[“a”、“b”、“c”],“Name”:“group1”},{“Items”:[“d”、“e”、“f”],“Name”:“group2”}]
日志(fn(arr,2,'Items'))
日志(fn(arr,5,'Items'))

log(fn(arr,8,'Items'))
我的解决方案,可能并不完美,但它可以工作:)

let数组=[
{
项目:[
“a”,
“b”,
“c”
],
名称:“Test1”
},
{
项目:[
“d”,
"e",,
“f”
],
名称:“Test2”
}
];
设itemsCount=5;
设filteredArray=[];
array.some(组=>{

如果(itemscont我的解决方案,可能不完美,但它有效:)

let数组=[
{
项目:[
“a”,
“b”,
“c”
],
名称:“Test1”
},
{
项目:[
“d”,
"e",,
“f”
],
名称:“Test2”
}
];
设itemsCount=5;
设filteredArray=[];
array.some(组=>{

如果(itemsCount谢谢,刚刚提出了类似的解决方案:)不客气:)我不会为此使用Array.some。你可能想试试lodash的
。.takeWhile()
谢谢,刚刚提出了类似的解决方案:)不客气:)我不会使用Array.some。你可能想试试lodash的
。.takeWhile()