如何制作具有有限值的对象数组

kar*_*o-s 0 javascript arrays reduce filter

抱歉,如果标题不清楚,请提前声明,但很难用言语描述它。

我拥有的:

const obj = {
 a: 5,
 b: 3,
 c: 0,
 d: 9
}
Run Code Online (Sandbox Code Playgroud)

我想要拥有什么:

const arr = [[a, 5] ,[b, 3]]
Run Code Online (Sandbox Code Playgroud)

基本上,我尝试编写一个返回条目数组的函数,但它也满足要求:

  • 当值等于 0时不想要对象
  • 值的总和必须小于 10

第一点对我来说很容易,我可以这样做

Object.entries(obj).filter(([k, v])=> v !== 0)
Run Code Online (Sandbox Code Playgroud)

但我无法处理第二个。

我可以reduce在这里使用吗?

jab*_*baa 5

您可以使用闭包IIFE来存储总和

Object.entries(obj).filter((() => {
  let sum = 0;
  return ([k, v]) => { sum += v; return v !== 0 && sum < 10; }; 
})());
Run Code Online (Sandbox Code Playgroud)

例子:

Object.entries(obj).filter((() => {
  let sum = 0;
  return ([k, v]) => { sum += v; return v !== 0 && sum < 10; }; 
})());
Run Code Online (Sandbox Code Playgroud)