gpt4 book ai didi

javascript - 我需要一种订购对象的方法

转载 作者:行者123 更新时间:2023-12-02 17:53:03 26 4
gpt4 key购买 nike

我需要一个类似于对象的数据结构,但就我而言,我需要键本身就是对象:

tree = { { "a": 1, "t": "text }: 42 }
tree[ { 'b': true, 'c': 15 } ] = 'hello'

如果我能够给两个键/对象一个strikt weak order,我可以轻松地模拟这一点。 。但显然{ "a": 1 } < { "a": 2 }不会产生任何有用的东西。即使我提取键值对并按键对它们进行排序,我也必须找到一种方法来比较键对象中的值。

我可以将键字符串化为 json 字符串,但我不确定是否可以保证,当我这样做时,结果将始终是相同的,并且这个解决方案对我来说看起来有点难看.

关于如何实现这样的数据结构(如果可能的话,简单、高性能和优雅)有什么想法、技巧或指示吗?

编辑:我需要这个来发布/订阅库。要订阅的节点由对象命名。对于客户端库,我必须做一些簿记才能了解订阅的状态。

举个例子,我如何对该数组进行排序:

[ { a: 1 }, { b: 2 }, { a: true, b: false, c: "hello" }, { d:'yes' } ]

最佳答案

But apparently { "a": 1 } < { "a": 2 } doesn't yield anything useful. Even if I extract the key value pairs, and sort them by keys, I would have to find a way to compare the values within the key objects.

您无法比较对象,但您可以编写一个函数来检查一个对象与另一个对象的值:

var arr = [
{ "a": 1 },
{ "a": 2 }
];

function test(obj1, obj2){
return obj1.a < obj2.a;
}

console.log(test(arr[0], arr[1])); // true

Demo

这就是你要找的吗?

此外,这里还有一个按键对对象数组进行排序的方法:

function compare(a,b) {
if (a.a < b.a)
return -1;
if (a.a > b.a)
return 1;
return 0;
}

arr.sort(compare);

Updated fiddle

关于javascript - 我需要一种订购对象的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21192687/

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