gpt4 book ai didi

javascript - Typescript - 从字典或数组中动态获取下一个和上一个项目

转载 作者:搜寻专家 更新时间:2023-10-30 21:35:10 24 4
gpt4 key购买 nike

我是 Angular 的新手,目前正在开发 Angular 5 应用程序。我需要从字典(模型)中获取下一个或上一个项目以进行下一个和上一个导航以获取路线。我查看了多篇文章并提出了以下方法。让我知道是否有其他有效和可靠的方法来做到这一点。我还需要确保它按值排序,以确保它在服务器(api)和客户端之间保持相同的顺序。这将是我们应用程序导航的重要方法,所以我想确保没有浏览器兼容性问题,没有缺点并且可靠。最坏的情况是我可以使用常规的 switch case 语句,它在多个条件下会很难看,但没问题。让我知道你的想法。提前致谢

var dict = {
"name3": 12,
"name1": 5,
"name2": 8
};

var items = sortProperties(dict);
//console.log(items);

var getItem = function(key, i) {

var index = 0;
var stop = true;
for (var j = 0; j < items.length; j++) {

if (items[j][0] == key) {
index = j;
break;// Found it
}
}
console.log(index);
if((index + i) > -1 && (index+i) <items.length)
{
return items[index+i][0];
}
else
{
return 'empty';
}
}


console.log(getItem("name2",-1));
console.log(getItem("name2",+1));



function sortProperties(obj)
{
// convert object into array
var sortable=[];
for(var key in obj)
if(obj.hasOwnProperty(key))
sortable.push([key, obj[key]]); // each item is an array in format [key, value]

// sort items by value
sortable.sort(function(a, b)
{
return a[1]-b[1]; // compare numbers
});
return sortable; // array in format [ [ key1, val1 ], [ key2, val2 ], ... ]
}

最佳答案

根据规范,对象中的属性没有内在顺序。虽然在实践中该顺序是确定性的,但依赖它并不是一个好主意。

每次您想要下一个或上一个属性时都对属性进行排序,这在不故意使情况变得更糟的情况下尽可能低效。至少使用一个数组来永久存储您的(排序的)条目。

如果这些操作(nextprevious)是您计划对您的结构做的主要事情并且其中可能有很多项目,您应该使用一个操作便宜的结构:a doubly-linked list .

如果您既想要这种访问方式又想要廉价的直接访问方式,您将不得不在某处为此付费。一种解决方案是使用数组或 Map 进行廉价的直接访问,并维护其中所有项目的 nextprevious 属性也具有链表行为。每次改变结构时都会为此付出代价,但这可能没关系,特别是如果它不经常改变的话。

关于javascript - Typescript - 从字典或数组中动态获取下一个和上一个项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52425259/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com