如何选取JavaScript对象的全部键值对?寻求可行实现方案
获取对象所有包含键名的键值对解决方案
方法1:使用Object.entries()(最简洁)
Object.entries()会直接返回一个由对象键值对组成的二维数组,每个子数组的第一个元素是键名,第二个是对应值,完全匹配你的需求:
var objects = { House: `some stuff`, Car: `some stuff`, Dog: `some stuff`, Boat: `some stuff` }; // 获取所有键值对(格式:[[key1, value1], [key2, value2], ...]) var allEntries = Object.entries(objects); var allOutput = Group(allEntries);
方法2:基于你原有代码改造
如果你想沿用自己的map逻辑,可以先通过Object.keys()自动获取对象所有键名,再在map里同时返回键名和对应值(支持对象或数组两种格式):
var objects = { House: `some stuff`, Car: `some stuff`, Dog: `some stuff`, Boat: `some stuff` }; // 自动获取所有键名,无需手动维护数组 var all = Object.keys(objects); // 返回包含键和值的对象数组(格式:[{key: 'House', value: 'some stuff'}, ...]) var find = all.map(name => ({ key: name, value: objects[name] })); // 或者返回数组形式(和Object.entries结果一致) // var find = all.map(name => [name, objects[name]]); var allOutput = Group(find);
为什么你之前的尝试无效?
你设置all为[]、[""]、["*"]都无法生效,核心原因是对象的属性访问是精确匹配键名的:
[]会让map遍历空数组,直接返回空结果[""]只会尝试访问objects[""](键名为空字符串的属性),你的对象中不存在该键["*"]只会访问objects["*"](键名为*的属性),同样不存在,自然拿不到数据
内容的提问来源于stack exchange,提问作者Pepe
相关产品推荐
相关产品推荐

