當JavaScript中存在指定字段的值時,javascript 是否有辦法將另一個對象的相同字段中的值分配給另一個對象的相同字段。即覆蓋舊值,不添加新值,使用意識構造,單行(對javascript和/或jQuery特別),並且不會循環,甚至是for-in。場3後Javascript:只改寫一個對象中的現有字段,並且使用另一個對象中的字段
var theSource = {
field1: "TEXT",
field2: "VAL",
field3: "ZZ",
field4: "4",
field5: "5"
},
theTarget = {
field2: "0",
field3: "",
field4: null,
field5: undefined
};
喜歡的東西
var result = jQuery.overwriteOnlyExisting(theTarget, theSource);
result === {
field2: "VAL"
field3: "ZZ"
...
}
NO Field 1和老油田被保留。
jQuery.extend
- 可以覆蓋值,但它也會複製新的字段。
我們在這裏有哪些選擇?
http://jsbin.com/owivat/1/edit(下劃線) - 我喜歡這個,現在是時候去找jQuery的方式了。
結果:
_.extend(theTarget, _(theSource).pick(_(theTarget).keys()));
142850 OPS /秒
Object.keys(theTarget).map(function(a) { if (a in theSource) theTarget[a] = theSource[a]; });
403243 OPS /秒
爲什麼* ...並且絕不會循環,甚至是in-in *? – fcalderan
你應該使用http://underscorejs.org/#each和http://backbonejs.org/#Model-has。基本上它是源代碼中的for-in循環和目標上的object.hasOwnProperty。 – inf3rno
@ inf3rno酷知道,但堅持與jQuery :) –