Javascript lodash-按嵌套项计数筛选集合
是否有任何简单的解决方案(vanilla js或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' } ] [ {
[
{
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()