Eug*_*uge 1 javascript ecmascript-6
我想编写一个表达式,它接受query
参数的值并生成一个新对象,该对象包含所有内容query
和默认$sort
值,但前提$sort
是尚未存在。
我觉得我应该使用传播运算符...
来执行此操作,但是不知道在这种情况下如何使用它。
下面的代码不起作用,因为它总是返回。{$sort: {priority: -1, createdAt: -1}}
理想情况下,它应在console.log
语句旁边的注释中打印出内容:
'use strict'
const funcUnderTest = (query) => ({
query: /^sort/.test(query) ? query : {$sort: {priority: -1, createdAt: -1}}
})
console.log(funcUnderTest(null)) // Should be { query: {$sort: {priority: -1, createdAt: -1}}}
console.log(funcUnderTest(({}))) // Should be { query: {$sort: {priority: -1, createdAt: -1}}}
console.log(funcUnderTest(({forCandidate: 123}))) // Should be { query: {forCandidate: 123, $sort: {priority: -1, createdAt: -1}}}
console.log(funcUnderTest(({$sort: {name:1}}))) // Should be { query: {$sort: {name: 1}}}
console.log(funcUnderTest(({forCandidate: 123, $sort: {name:1}}))) // Should be { forCandidate: 123, query: {$sort: {name: 1}}}
Run Code Online (Sandbox Code Playgroud)
您可以Object.assign
为此使用。
我将假设您的最后一个示例输出是一个错误(应该是{ query: {$sort: {name: 1}, forCandidate: 123}}
),因为它与您的其他预期输出不一致。
'use strict'
const funcUnderTest = (query) => ({
query: Object.assign({$sort: {priority: -1, createdAt: -1}}, query || {})
})
console.log(funcUnderTest(null)) // Should be { query: {$sort: {priority: -1, createdAt: -1}}}
console.log(funcUnderTest(({}))) // Should be { query: {$sort: {priority: -1, createdAt: -1}}}
console.log(funcUnderTest(({forCandidate: 123}))) // Should be { query: {forCandidate: 123, $sort: {priority: -1, createdAt: -1}}}
console.log(funcUnderTest(({$sort: {name:1}}))) // Should be { query: {$sort: {name: 1}}}
console.log(funcUnderTest(({forCandidate: 123, $sort: {name:1}}))) // Should be { forCandidate: 123, query: {$sort: {name: 1}}}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
824 次 |
最近记录: |