首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JavaScript对象是否有总订单?

JavaScript对象是否有总订单?
EN

Stack Overflow用户
提问于 2015-02-08 03:58:34
回答 1查看 280关注 0票数 3

这个标题说明了一切。JavaScript在使用<><=>=运算符时是否保证对象的总顺序?

我编写了一些代码,只是为了检查某些对象的总体顺序。结果与全序一致,但这并不能证明任何事情:

代码语言: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"
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-02-08 04:46:04

取决于我们考虑的对象是什么。如果我们把注意力集中在数字类上,那么是的,订单将是总计的。正如您的示例所演示的那样,字符串 (至少有些)也是如此。但总体似乎并不普遍。

例如,如果将var h = 5;添加到声明中,然后将h添加到thereIsTotalOrder调用中,则将得到一个false。这是因为在h = 5c = 'foo'的状态下(hcch)是假的(这意味着总体性不满意)。

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

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28390401

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档