javascript – 如何动态地将值赋给对象的相同属性?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – 如何动态地将值赋给对象的相同属性?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1260字,纯文字阅读大概需要2分钟。
内容图文
![javascript – 如何动态地将值赋给对象的相同属性?](/upload/InfoBanner/zyjiaocheng/789/c9e914e6bc0c4a0e8f4764fb1d1b06f1.jpg)
假设我有一个数组:
var myArr = [
{a: {'one': 1} },
{b: {'two': 2} },
{a: {'three': 3} },
{c: {'four': 4} },
{d: {'five': 5} }
];
我想创建一个Object,这样说:
let myObj = {};
myObj = {
a: {
'one': 1,
'three': 3
},
b: {'two': 2},
c: {'four': 4},
d: {'five': 5}
}
财产’a’被覆盖.如何防止这种情况发生?
我面临的问题是如果我做以下事情:
myArr.forEach((x) => {
myObj[Object.keys(x)[0]] = x[Object.keys(x)];
});
我得到了结果:
{
"a": {"three": 3},
"b": {"two": 2},
"c": {"four": 4},
"d": {"five": 5}
}
解决方法:
你可以使用reduce之类:
var myArr = [ {a: {'one': 1} }, {b: {'two': 2} }, {a: {'three': 3} }, {c: {'four': 4} }, {d: {'five': 5} } ];
var myObj = myArr.reduce(function(obj, o) { // for each object o in the array myArr
var key = Object.keys(o)[0]; // get the key of the object o ('a', 'b', ...)
var subKey = Object.keys(o[key])[0]; // get the key of the object inside o ('one', 'two', ...)
if(!obj[key]) { // if there is no object for the key 'key' in the result object
obj[key] = {}; // then add one
}
obj[key][subKey] = o[key][subKey]; // then add an entry for the 'subKey' to the object under the key 'key' (with the value taken from o)
return obj;
}, {});
console.log(myObj);
内容总结
以上是互联网集市为您收集整理的javascript – 如何动态地将值赋给对象的相同属性?全部内容,希望文章能够帮你解决javascript – 如何动态地将值赋给对象的相同属性?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。