繁体   English   中英

Javascript 逻辑排序 object 基于包含逻辑

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM