はOPのもう少し複雑な要求
個々のオブジェクトにだけmap
値のスキーマのキーに編集し、それらを広めます。あなたは、schema
を上書きしたいObject.assign()
に異なるtarget
を指定しない場合
Object.assign(
schema,
...Object.keys(schema).map(
(key) => ({[key]: schema[key]})
),
...Object.keys(schema).map(
(key) => ({[key]: values[key]})
)
);
:
let sanitized = Object.assign(
{},
...Object.keys(schema).map(
(key) => ({[key]: schema[key]})
),
...Object.keys(schema).map(
(key) => ({[key]: values[key]})
)
);
@Bergi's answerに近いパターンに続いて、あなたが少なく何かをすることができた後にそれらを置くことによってvalues
に優先順位を付けますObject.assign()
で冗長にする:
let sanitized = Object.assign({}, ...Object.keys(schema).map(
(key) => ({[key]: (key in values ? values : schema)[key]})
)
);
単純な更新ルーチンを書いてください。浅いコピーが必要なだけなので、割り当て部分に条件を入れて、Object.assignポリフィルをフォークすることができます。 – dandavis
浅いコピーが必要で、getterやsetterではない列挙可能な独自のプロパティをサポートするためにのみ必要ですか? – Ben
浅いコピーは大丈夫ですが、値のプロパティが何を意味するのかは不明です。 (プロトタイププロパティは必要ありませんが、それはあなたが意味するものです) – Dan