javascript - 对象中的键值未正确填充
问题描述
我正在尝试将对象的每个属性存储到一个对象数组中。
前任 :
{
a: b,
c: d
}
到
[
{ a: b },
{ c: d }
]
下面是我试图执行的代码。
var a = {
a: "a",
b: "b"
}
var newA = []
for (var keys in a) {
if (a.hasOwnProperty(keys)) {
newA.push({
keys: a[keys]
})
}
}
console.log(newA)
当我将属性推送到“newA”数组时,键值被推送为“键”而不是原始键名。
结果:[{keys:a},{keys:b}]
预期:[{a:a},{b:b}]
解决方案
您需要使用计算属性名称。此外,我认为hasOwnProperty()
您的代码是多余的,至少对于这个特定示例,您的对象不继承可枚举属性。查看描述中的for ...。所以你可以去:
for (const key in a)
{
newA.push({[key] : a[key]});
}
但是,作为替代方案,您可以使用Object.entries()和Array.map():
var a = {a : "a", b : "b"};
let res = Object.entries(a).map(([k,v]) => ({[k]: v}));
console.log(res);
.as-console {background-color:black !important; color:lime;}
.as-console-wrapper {max-height:100% !important; top:0;}
推荐阅读
- corda - Corda 数据库管理器创建数据源失败
- asp.net-core - 如何使用 netcore API 获取 Microsoft Dynamics 365 V9 的 OAuth 访问令牌
- sas - 这个 SAS 笔记在说什么?ODS PDF(WEB) 打印无输出
- mongodb - 使用 mongodb 事务时如何读回结果?
- bash - sed 删除第一个模式之后的所有内容(仅在该行中)
- lua - Xonix 游戏优化问题
- flutter - 在 Flutter 中为 Stateful Widget 设置/获取值
- regex - 为什么 1100 与 /(0*1(00)*10*)*/ 匹配?
- reactjs - 在 springboot 邮件 API 中启用 CORS
- css - 边距自动没有居中弹性项目