javascript - 如何将 JavaScript 对象值转换为数组

标签 javascript json

我需要编写一个函数来转换这样的对象:

const foodList = {fruit: {apples: true, pears: false, berries: true}, dairy: {milk: true, cheese: false}, vegetables: {}}
console.log(foodList)

进入这个:

const result = {fruit: ['apples', 'berries'], dairy: ['milk']}
console.log(result)

我正在尝试将嵌套值转换为 food 键等于 true 的数组。

最佳答案

您可以使用Object.entries 将对象转换为数组。使用reduce 对数组进行循环汇总。使用 Object.keysfilter 获取具有真实值的键。

const foodList = {"fruit":{"apples":true,"pears":false,"berries":true},"dairy":{"milk":true,"cheese":false},"vegetables":{}}

const result = Object.entries(foodList).reduce((c, [k, v]) => {
  let t = Object.keys(v);
  if (t.length) c[k] = t.filter(o => v[o]);
  return c;
}, {});

console.log(result);

关于javascript - 如何将 JavaScript 对象值转换为数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56248632/

相关文章:

xml - 使用 XML 或 JSON 有什么用?

javascript - 使用 JavaScript 和 REST OData 查询 CRM 2011 AppointmentSet 时如何测试 d.data.results 中存在哪些数据

java - 在Java中,如果递归方法可以返回混合值,我应该如何声明返回类型?

javascript - 对 JSON 数组进行过滤和排序

json - JSON 模式中的破折号给出错误

javascript - 如何回显数据类型 ="address"?

javascript - js组合对象只返回一个id

javascript - 使用 jquery 删除第一个 li 元素中的第一个 img

javascript - 在浏览器上比较时如何检查 "↵"(换行)?

php - 从 JSON 字符串中提取数据时出现未定义的属性错误?