GVKun编程网logo

尝试对自定义JavaScript对象进行排序(javascript 自定义对象)

11

这篇文章主要围绕尝试对自定义JavaScript对象进行排序和javascript自定义对象展开,旨在为您提供一份详细的参考资料。我们将全面介绍尝试对自定义JavaScript对象进行排序的优缺点,解

这篇文章主要围绕尝试对自定义JavaScript对象进行排序javascript 自定义对象展开,旨在为您提供一份详细的参考资料。我们将全面介绍尝试对自定义JavaScript对象进行排序的优缺点,解答javascript 自定义对象的相关问题,同时也会为您带来java – 对自定义对象的矢量进行排序、javascript – 使用lodash按键对数组中的对象进行排序、javascript – 如何对对象的JS对象进行排序?、javascript – 如何按字母顺序对单个对象进行排序?的实用方法。

本文目录一览:

尝试对自定义JavaScript对象进行排序(javascript 自定义对象)

尝试对自定义JavaScript对象进行排序(javascript 自定义对象)

我不太擅长JS,但到目前为止还活了下来.我正在创建一个复杂的JS对象,并希望对其进行排序.对象的结构如下所示:

cart.attributes = [
  {
    Attribute,Value
  }
  ...
];

我正在创建一个独特的属性,告诉我3个由冒号任意分隔的东西:(产品ID):(产品数量Iterator):(属性名称)
产品QTY迭代器只是意味着,如果我有3个相同的产品,那么凌晨3点我在谈论属性.然后每个属性都有一个值.

问题正如您从打印输出中看到的那样,没有任何组织.我想首先按(产品ID),然后是(QTY Iterator)对这些结果进行排序,然后按字母顺序按(名称)排序.

这是使用以下方法打印出来的对象,然后打印出结果.

用于打印结果的代码

$.each(cart.attributes,function(attr,value) {
  console.log("Attr: "+attr);
  console.log("Value: "+value);
});

结果

«Attr» 46913872:2:Size
«Value» 10
«Attr» 46913872:2:Hollow-to-Hem
«Value» 57"
«Attr» 46913872:1:Hips
«Value» 34"
«Attr» 46913872:2:Bust
«Value» 34"
«Attr» 46913872:2:Dress Color (hex)
«Value» #FFFFFF
«Attr» 46913872:2:rush Cut
«Value» Super rush Cut - 6 weeks
«Attr» 46913872:1:Extra Length
«Value» 5"
«Attr» 46913872:2:Hips
«Value» 34"
«Attr» 46913872:1:Waist
«Value» 29"
«Attr» 46913872:2:Waist
«Value» 23"
«Attr» 46913872:2:Dress Color (name)
«Value» White
«Attr» 46913872:1:rush Cut
«Value» Super rush Cut - 6 weeks
«Attr» 46913872:1:Sash Color (name)
«Value» Lipstick
«Attr» 46913872:2:Sash Color (hex)
«Value» #000000
«Attr» 46913872:1:Size
«Value» 14
«Attr» 46913872:1:Hollow-to-Hem
«Value» 58"
«Attr» 46913872:1:Bust
«Value» 35"
«Attr» 46913872:1:Sash Color (hex)
«Value» #B6064C
«Attr» 46913872:1:Dress Color (hex)
«Value» #F9C8D0
«Attr» 46913872:1:Dress Color (name)
«Value» Tea Rose
«Attr» 46913872:2:Extra Length
«Value» 5"
«Attr» 46913872:2:Sash Color (name)
«Value» Black

解决方法

好的,从下面的评论我得到了更清楚的对象是什么.

假设对象看起来像这样:

cart.attributes = {
    '46913872:2:Size' : 10,'46913872:2:Hollow-to-Hem' : 57
    // ...
}

它无法排序,因为它不是数组.但是你可以把它分类打印出来.

在普通的旧JavaScript中你可以做到:

// First get all keys:
var keys = [];
for (var n in cart.attributes) {
    if (cart.attributes.hasOwnProperty(n)) {
        keys.push(n);
    }
}

// Now sort the keys:
keys.sort(function(a,b){
    attr_a = a.split(':');
    attr_b = b.split(':');

    // sort by product ID:
    if (parseInt(attr_a[0],10) < parseInt(attr_b[0],10)) return -1;
    if (parseInt(attr_a[0],10) > parseInt(attr_b[0],10)) return 1;
    // sort by quantity:
    if (parseInt(attr_a[1],10) < parseInt(attr_b[1],10)) return -1;
    if (parseInt(attr_a[1],10) > parseInt(attr_b[1],10)) return 1;
    // finally sort by name:
    if (attr_a[2] < attr_b[2]) return -1;
    if (attr_a[2] > attr_b[2]) return 1;
    return 0;
})

// Now print out the object in key-sorted-order:
for (var i=0; i<keys.length; i++) {
    console.log("Attr: "+keys[i]);
    console.log("Value: "+cart.attributes[keys[i]]);
}

java – 对自定义对象的矢量进行排序

java – 对自定义对象的矢量进行排序

如何对自定义对象的矢量进行排序并选择要排序的属性?

我确实看到了这个问题&回答,但我不太清楚它的排序基于什么.代码示例将优先于“方法论”.

Sort a Vector of custom objects

public class ItemLocation {
    String icon;
    String title;
    String message;
    String subtext;
    String deviceid;
    double latCoords;
    double lngCoords;
    int expiary;
    int id;
    double proximity;
    String locSeen;
}

解决方法

下面是一个允许您按ItemLocation的指定字段排序的示例:

public void sort(final String field,List<ItemLocation> itemLocationList) {
    Collections.sort(itemLocationList,new Comparator<ItemLocation>() {
        @Override
        public int compare(ItemLocation o1,ItemLocation o2) {
            if(field.equals("icon")) {
                return o1.icon.compareto(o2.icon);
            } if(field.equals("title")) {
                return o1.title.compareto(o2.title);
            } else if(field.equals("message")) {
                return o1.message.compareto(o2.message);
            } 
            .
            . fill in the rest of the fields...
            .
            else if(field.equals("locSeen")) {
                return o1.locSeen.compareto(o2.locSeen);
            } 
        }           
    });
}

javascript – 使用lodash按键对数组中的对象进行排序

javascript – 使用lodash按键对数组中的对象进行排序

嗨Stack Overflow社区!

我有以下测试数组:

let test = [{
    "searchQuery": "test","resultsLoaded": -1,"offset": -1,"allResults": 10
},{
    "MetaData": {
        "type": "page-content","image": true,"name": "lorem-ipsum","rank": 10,"tags": ["website:lorem/ipsum"]
    },"componentData": {
        "header": "Lorem Ipsum","path": "/content/asdf","breadcrumbDouble": {
            "breadcrumbItem1": {
                "href": "lorem ipsum","text": "lorem ipsum"
            },"breadcrumbItem2": {
                "href": "/content/asdf","text": "Lorem Ipsum"
            }
        },"content": {
            "subheadline": "Lorem Ipsum","img": {
                "alt": "","imgSrc": "/content/dam/production/images/asdf.jpeg.imgTransformer/listPageItem/desktop/1511962617778/asdf.jpg"
            },"tags": [{
                "category": "lorem","value": "ipsum"
            }]
        }
    }
},"rank": 50,"rank": 30,"value": "ipsum"
            }]
        }
    }
}];

我现在想要的是按MetaData.rank从最高到最低排序对象.

我想像这样使用lodash的orderBy():

let result = orderBy(test,function(e) {
    let array = parseInt(e.MetaData.rank);
    return array;
},['desc']);

但是我收到以下错误:

TypeError: Cannot read property ‘rank’ of undefined

我的orderBy函数中的console.log(e)显示了这个:

{
    searchQuery: 'test',resultsLoaded: -1,offset: -1,allResults: 10
}

有任何快速建议来解决这个问题

我知道第一个对象是因为结构不同而导致问题.所以我需要解决它!

解决方法

您可以将没有MetaData属性的项目移动到顶部,并按排名对其余项目进行排序.

var array = [{ searchQuery: "test",allResults: 10 },{ MetaData: { type: "page-content",image: true,name: "lorem-ipsum",rank: 10,tags: ["website:lorem/ipsum"] },componentData: { header: "Lorem Ipsum",path: "/content/asdf",breadcrumbDouble: { breadcrumbItem1: { href: "lorem ipsum",text: "lorem ipsum" },breadcrumbItem2: { href: "/content/asdf",text: "Lorem Ipsum" } },content: { subheadline: "Lorem Ipsum",img: { alt: "",imgSrc: "/content/dam/production/images/asdf.jpeg.imgTransformer/listPageItem/desktop/1511962617778/asdf.jpg" },tags: [{ category: "lorem",value: "ipsum" }] } } },rank: 50,rank: 30,value: "ipsum" }] } } }];

array.sort(function (a,b) {
    return ('MetaData' in a) - ('MetaData' in b) || b.MetaData.rank - a.MetaData.rank;
});

console.log(array);
.as-console-wrapper { max-height: 100% !important; top: 0; }

javascript – 如何对对象的JS对象进行排序?

javascript – 如何对对象的JS对象进行排序?

我在 PHP中构建了一个对象,使用了JSON_encode函数并通过ajax将其作为JSON字符串发送到我的JS脚本.然后我将它转换回一个对象.我遇到的问题是我想按照最初创建的顺序保留对象.请将这个对象看成是什么,一旦我进入JS,请看这个图片:

当我创建对象时,它按字母顺序按客户字段排序.以A开头的客户名称将首先出现,B秒等等.正如您所看到的,现在,对象的第一个元素是以S开头的客户.看起来它以某种方式按照顶层的键自动排序对象,这是一个整数,所以我理解为什么会这样.

所以我想做的是重新排序这个对象,以便按字母顺序按客户字段对所有子对象进行排序.这可能吗?如果是这样,我该怎么办?

谢谢!

解决方法

这可能是 JavaScript对象和JavaScript数组之间的区别.对象更像是哈希表,其中键没有按任何特定顺序排序,而数组是值的线性集合.

在后端,确保编码数组而不是对象.检查最终编码的JSON,如果您的对象集合被{}而不是[]包围,则它被编码为对象而不是数组.

您可能会遇到问题,因为看起来您正试图通过ID号访问对象,而这是您希望这些对象在最终数组中占用的索引,这会带来另一个问题,因为您可能不想要当您只存储少量值时,包含40,000个条目的数组.

如果您只想迭代对象,则应确保编码数组而不是对象.如果要按特定ID访问对象,则可能必须对客户端对象进行排序(即从JSON响应中获取对象,然后创建另一个数组并将这些对象排序到其中,这样您就可以已排序的对象仍然可以通过id)访问它们.

您可以通过Google轻松找到有效的排序算法(或使用以下ELCas中的算法).

javascript – 如何按字母顺序对单个对象进行排序?

javascript – 如何按字母顺序对单个对象进行排序?

我想按字母顺序排序单个对象…

保持其关键和价值ex:

input is: {2: “a”, 3: “e”, 4: “h”, 5: “g”, 6: “d”, 7: “i”, 8: “c”, 9: “f”, 10: “b”}

i need output: {2: “a”, 10: “b”, 8: “c”, 6: “d”, 3: “e”, 9: “f”, 5: “g”, 4: “h”, 7: “i”}

这是我的js代码:

var myObject = {2: "a", 3: "e", 4: "h", 5: "g", 6: "d", 7: "i", 8: "c", 9: "f", 10: "b"}

keysSorted = Object.keys(myObject).sort(function(a,b){return myObject[a]-myObject[b]});
console.log(keysSorted);

这是我的小提琴:
https://jsfiddle.net/j7yujL2y/

解决方法:

如果您只想对属性名称数组进行排序,请使用String#localeCompare来比较字符串.

var myObject = {
  2: "a",
  3: "e",
  4: "h",
  5: "g",
  6: "d",
  7: "i",
  8: "c",
  9: "f",
  10: "b"
}

keysSorted = Object.keys(myObject).sort(function(a, b) {
  return myObject[a].localeCompare(myObject[b])
});
console.log(keysSorted);

关于尝试对自定义JavaScript对象进行排序javascript 自定义对象的问题我们已经讲解完毕,感谢您的阅读,如果还想了解更多关于java – 对自定义对象的矢量进行排序、javascript – 使用lodash按键对数组中的对象进行排序、javascript – 如何对对象的JS对象进行排序?、javascript – 如何按字母顺序对单个对象进行排序?等相关内容,可以在本站寻找。

本文标签: