gpt4 book ai didi

javascript - JavaScript 对象有全序吗?

转载 作者:行者123 更新时间:2023-11-29 14:49:18 25 4
gpt4 key购买 nike

标题几乎说明了一切。使用 < 时,JavaScript 是否保证对象的总顺序, > , <=>=运营商?

我写了一些代码只是为了检查某些对象的总排序。结果与全序一致,但这并不能证明什么:

function thereIsTotalOrder(items){

var one, other, theThird;

// warning: n^3 complexity follows

// If a <= b and b <= a then a = b (antisymmetry);
for(var i=0; i<items.length; i++){
for(var j=0; j<items.length; j++){
one = items[i];
other = items[j];
if((one <= other) && (other <= one) && (one != other)){
return false;
}
}
}

// If a <= b and b <= c then a <= c (transitivity)
for(var i=0; i<items.length; i++){
for(var j=0; j<items.length; j++){
for(var k=0; k<items.length; k++){
one = items[i];
other = items[j];
theThird = items[k];
if((one <= other) && (other <= theThird) && !(one <= theThird)) {
return false;
}
}
}
}

// a <= b or b <= a (totality).
for(var i=0; i<items.length; i++){
for(var j=0; j<items.length; j++){
one = items[i];
other = items[j];
if(!((one <= other) || (other <= one))) {
return false;
}
}
}

return true;
}

function a(){};
function b(){};
var c = "foo";
var d = "bar";
var e = "bar";
var f = function(){};
var g = {name : "bananas"};

console.log(thereIsTotalOrder([a, b, c, d, e, f, g])); // prints "true"

最佳答案

取决于我们正在考虑的对象。如果我们将注意力集中在 numbers 类上,那么是的,订单将是总的。正如您的示例所示,(至少一些)strings 也是如此。 .但整体性似乎并不普遍。

例如,如果您将 var h = 5; 添加到您的声明中,然后将 h 添加到您的 thereIsTotalOrder 调用中,您将得到错误。这是因为在 h = 5c = 'foo' 的状态下,(hcch) 为假(即不满足totality)

正如您正确指出的那样,虽然 thereIsTotalOrder 返回的假值不存在并不能证明所有对象都是完全有序的,但是 的存在false确实证明所有对象之间的顺序(如果已定义)不是总的。

关于javascript - JavaScript 对象有全序吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28390401/

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