这篇文章主要围绕尝试对自定义JavaScript对象进行排序和javascript自定义对象展开,旨在为您提供一份详细的参考资料。我们将全面介绍尝试对自定义JavaScript对象进行排序的优缺点,解
这篇文章主要围绕尝试对自定义JavaScript对象进行排序和javascript 自定义对象展开,旨在为您提供一份详细的参考资料。我们将全面介绍尝试对自定义JavaScript对象进行排序的优缺点,解答javascript 自定义对象的相关问题,同时也会为您带来java – 对自定义对象的矢量进行排序、javascript – 使用lodash按键对数组中的对象进行排序、javascript – 如何对对象的JS对象进行排序?、javascript – 如何按字母顺序对单个对象进行排序?的实用方法。
本文目录一览:- 尝试对自定义JavaScript对象进行排序(javascript 自定义对象)
- java – 对自定义对象的矢量进行排序
- javascript – 使用lodash按键对数组中的对象进行排序
- javascript – 如何对对象的JS对象进行排序?
- javascript – 如何按字母顺序对单个对象进行排序?
尝试对自定义JavaScript对象进行排序(javascript 自定义对象)
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 – 对自定义对象的矢量进行排序
我确实看到了这个问题&回答,但我不太清楚它的排序基于什么.代码示例将优先于“方法论”.
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; }
解决方法
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按键对数组中的对象进行排序
我有以下测试数组:
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 }
有任何快速建议来解决这个问题
我知道第一个对象是因为结构不同而导致问题.所以我需要解决它!
解决方法
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对象进行排序?
当我创建对象时,它按字母顺序按客户字段排序.以A开头的客户名称将首先出现,B秒等等.正如您所看到的,现在,对象的第一个元素是以S开头的客户.看起来它以某种方式按照顶层的键自动排序对象,这是一个整数,所以我理解为什么会这样.
所以我想做的是重新排序这个对象,以便按字母顺序按客户字段对所有子对象进行排序.这可能吗?如果是这样,我该怎么办?
谢谢!
解决方法
在后端,确保编码数组而不是对象.检查最终编码的JSON,如果您的对象集合被{}而不是[]包围,则它被编码为对象而不是数组.
您可能会遇到问题,因为看起来您正试图通过ID号访问对象,而这是您希望这些对象在最终数组中占用的索引,这会带来另一个问题,因为您可能不想要当您只存储少量值时,包含40,000个条目的数组.
如果您只想迭代对象,则应确保编码数组而不是对象.如果要按特定ID访问对象,则可能必须对客户端对象进行排序(即从JSON响应中获取对象,然后创建另一个数组并将这些对象排序到其中,这样您就可以已排序的对象仍然可以通过id)访问它们.
您可以通过Google轻松找到有效的排序算法(或使用以下ELCas中的算法).
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 – 如何按字母顺序对单个对象进行排序?等相关内容,可以在本站寻找。
本文标签: