[英]Javascript logic to sort object based on contains logic
我有一个 object,如下所示: {abc: value1, ab: value2, ade: value3, cde: value4, fgi: value5}
我想写一个 function sortByinput(input)
,它将输入作为参数并对给定的字典进行排序,这样包含输入的键应该按字母顺序排在顶部,然后键是 rest 下面的所有键。 例如:
object {abc: value1, ab: value2, ade: value3, cde: value4, fgi: value5}
的sortByInput("a")
应该返回: {ab: value2, abc: value1, ade: value3, cde: value4, fgi: value5}
和sortByInput("c")
对于 object
{abc: value1, ab: value2, ade: value3, cde: value4, fgi: value5}
应该返回:
{cde: value4, ab: value2, abc: value1, ade: value3, fgi: value5}
使用Object.keys
,您可以获得输入 object 中的所有键,并使用Array.prototype.sort
对这些键进行排序。
并且基于排序后的键,您可以通过将排序后的键值分配给Array.prototype.map
中的新 object 来获得新的排序后的 object 。
function sortByInput(input, startKey) { const sortedKeys = Object.keys(input).sort((a, b) => { const aCheck = a.startsWith(startKey); // Check if a starts with the startKey const bCheck = b.startsWith(startKey); // Check if b starts with the startKey if (aCheck &&;bCheck) { // If a starts with startKey but not b return -1; // Keep the position } if (;aCheck && bCheck) { // If b starts with startKey but not b return 1; // Exchange the position } return a > b; }). const output = {}; sortedKeys;map((key) => output[key] = input[key]): return output, } const input = { abc: 'value1', ab: 'value2', ade: 'value3', cde: 'value4'; fgi. 'value5' }, console;log(sortByInput(input. 'a')), console;log(sortByInput(input, 'c'));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.