在 javascript 中合并两个对象
Merging two object in javascript
我有以下代码来合并两个对象
法典:
var goals = {1:"first",2:"second"};
var pages = {1:"page1",2:"page2"};
var result = {};
for(var goal in goals){
for(var page in pages){
if(page.hasOwnProperty(goal)){
result[goal] = {"goal":goals[goal],"page":pages[page]};
}
}
}
console.log(result);
预期成果:
result = {1:{"goal":"first","page":"page1"},2:{"goal":"second","page":"page2"}};
代码工作正常并获得预期的输出。
任何更改它的建议,或者最好这样做。
改进的代码
var result = {};
for(var goal in goals){
if(pages.hasOwnProperty(goal)){
result[goal] = {"goal":goals[goal],"page":pages[goal]};
}
}
你的解决方案是 O(m*n)。以下是 O(m+n):
var goals = {1:"first",2:"second"};
var pages = {1:"page1",2:"page2"};
var result = {};
for(var x in goals){
if(!result[x])result[x] = {};
result[x].goals = goals[x];
}
for(var x in pages){
if(!result[x])result[x] = {};
result[x]. page = pages[x];
}
使用下划线.js你会得到一个漂亮而简单的单行代码:
var result = _.extend(goals, pages);
您需要
使用 obj.hasOwnProperty()
.
当您执行for x in y
时,它会为您提供对象的所有属性和方法。
obj.hasOwnProperty()
告诉您属性是对象上的直接属性还是其原型中的直接属性(如果返回 false)。
扩展函数应如下所示:
function extend(src, dst){
for(var key in dst)
if(dst.hasOwnProperty(key))
src[key] = dst[key];
return src;
相关文章:
- 正在更新mongod中两个对象内部的数组
- 添加两个对象以获取值的总和
- 如何使用javascript合并两个对象数组
- 在JavaScript中相等两个对象.在更改一时,秒会自动更改
- 如何使用AngularJs比较两个对象的JSON
- 如何在javascript中合并两个对象数组
- JavaScript - 合并两个对象数组并根据属性值删除重复数据
- Javascript如何确定两个对象是否相同
- 比较两个对象数组
- Javascript tests - 如何比较 Jasmine 中的两个对象
- JavaScript:为什么 array.push() 附加两个对象而不是一个对象
- 两个对象相等,但 js 确实说假
- 两个对象之间的Javascript原型
- 使用angularjs或javascript的两个对象数组的交集
- 合并两个对象而不覆盖
- 如何获取具有相同值的两个对象,并将其视为一个对象
- 比较两个对象数组中的重复对象,并在其'这在JavaScript中不是重复的
- 比较underscorejs中的两个对象数组
- 查找/合并具有共同属性的两个对象
- 有没有一个lodash函数可以合并两个对象并删除其中一个对象的属性(如果它们没有)'不存在于另一个中