gpt4 book ai didi

javascript - 合并 JavaScript 对象

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:38:32 25 4
gpt4 key购买 nike

我读过另一个 similiar question on SO但这个问题没有明确的答案。

我得到了一些如下所示的 JavaScript 对象:

var moveJSON = {
'name' : move[0].innerHTML,
'info' : move[1].innerHTML,
'power' : move[2].innerHTML,
'accuracy' : move[3].innerHTML,
'type' : move[4].innerHTML,
'category' : move[5].innerHTML,
'pp_min' : move[6].innerHTML,
'pp_max' : move[7].innerHTML
}

我需要将它们合并为一个对象,该对象将通过 AJAX 发送到 PHP。但首先:将它们合并到单个对象(数组)中的最佳方法是什么?

最佳答案

“合并”对象不同于将对象放入数组,这是一种聚合。尽管它为您提供了要传递的单个对象,但此聚合在结构上与合并对象不同。在访问新容器(数组)中的值时,聚合会增加一个深度级别。这不同于合并,后者会产生相同的容器,一个对象。

如果您正在使用 Dojo,那么您可以这样做:

var mergedObject = dojo.mixin(object1, object2);

否则,这里有一个合并两个或多个对象的简单方法:

var merge = function() {
var result = {},
length = arguments.length,
object = null,
key = null;

if ( length < 2 ) {
throw "Must merge two or more objects";
}

for ( var i=0; i<length; ++i ) {
object = arguments[i];
for ( var key in object ) {
if ( !object.hasOwnProperty(key) ) { continue; }
result[key] = object[key];
}
}
return result;
};

var mergedObject = merge({a:1}, {b:2, c:3, d: {a: 1}}, {a: 2, c:[1,2,3]});
// mergedObject looks like {a:4, b:2, c:[1,2,3], d:{a:1}}

如您所见,这与聚合非常不同:

var aggregate = function() {
if ( length < 2 ) {
throw "Must aggregate two or more objects";
}

// The following can be simplified to
// return Array.prototype.slice.call(arguments);
// but is left in a more explicit manner to illustrate the difference

var result = [],
length = arguments.length;

for ( var i=0; i<length; ++i ) {
if ( arguments.hasOwnProperty(i) ) {
result.push(arguments[i]);
}
}

return result;
};

var aggregation = aggregate({a:1}, {b:2, c:3, d: {a: 1}}, {a: 4, c:[1,2,3]});
// aggregation looks like [{a:1}, {b:2, c:3, d: {a: 1}}, {a: 4, c:[1,2,3]}];

所以区别在于 mergedObject 看起来像 {a:4, b:2, c:[1,2,3], d:{a:1}},其中属性 d 作为 mergedObject.d 访问,而不是 aggregation,它看起来像 [{a:1 }, {b:2, c:3, d: {a: 1}}, {a: 4, c:[1,2,3]}] 以及属性 d 作为 aggregation[1].d 访问。

还应注意,由于 JavaScript 中可用的文字数组定义语法,因此不需要显式聚合函数

var aggregation = aggregate({a:1}, {b:2, c:3, d: {a: 1}}, {a: 4, c:[1,2,3]});

相当于

var aggregation = [{a:1}, {b:2, c:3, d: {a: 1}}, {a: 4, c:[1,2,3]}];

关于javascript - 合并 JavaScript 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1744946/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com