1

ユーザー入力でデフォルトを上書きしたいのですが、データが存在しない場合はデフォルトで空白を埋めます。そのようです:

var userInput={
    name:"Pat",
    color: "green"
}
var defaults={
    name:"Trevor",
    color: "blue",
    state: "washington"
}
var finalObject=mergeObjects(userInput,defaults);
//Should produce:
{
    name:"Pat",
    color: "green",
    state: "washington"
}

この種のマージ/上書きはjQueryで可能ですか? この質問を見ましたが、配列で機能し、必要に応じて上書きしません。

何か案は?

4

2 に答える 2

6

jQueryの$.extend()メソッドはトリックを行います:

var finalObject = $.extend({}, defaults, userInput);

$.extend()最初の引数として渡されたオブジェクトを変更する (そしてそれを返す) ことに注意しdefaultsてくださいuserInput。好きなだけオブジェクトを渡すことができ、それらはすべて、提供された順序で最初のオブジェクトにマージされます (したがって、目的の結果のdefaults前に来ます)。userInput

于 2013-09-07T02:07:41.310 に答える
1

jQuery.extendこれは、2 つ以上のオブジェクトを明示的にマージするためのものです (引数の順序は、仮想メソッドとは逆になります) mergeObjects

var finalObject = $.extend(defaults, userInput);

finalObject // Object {name: "Pat", color: "green", state: "washington"}
于 2013-09-07T02:04:51.983 に答える