首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在javascript中按字母顺序对数组排序

在javascript中按字母顺序对数组排序
EN

Stack Overflow用户
提问于 2021-07-01 16:28:51
回答 2查看 487关注 0票数 0

如何按对象的值按字母顺序而不是键排序?这是一个对象

代码语言:javascript
运行
复制
{
1: "Arabic"
2: "Bulgarian"
3: "Catalan"
4: "Chinese"
5: "Croatian"
6: "Czech"
7: "Danish"
8: "Dutch"
9: "English"
10: "Estonian"
11: "Finnish"
12: "French"
13: "German"
14: "Greek"
15: "Hebrew"
16: "Hungarian"
17: "Icelandic"
18: "Indonesian"
19: "Italian"
20: "Japanese"
21: "Korean"
22: "Latvian"
23: "Lithuanian"
24: "Norwegian"
25: "Polish"
26: "Portuguese"
27: "Romanian"
28: "Russian"
29: "Serbian"
30: "Slovak"
31: "Slovenian"
32: "Spanish"
33: "Swedish"
34: "Turkish"
35: "Afrikaans"
}

,并按字母顺序显示所需输出。

{ 35:“南非荷兰语”1:“阿拉伯语”2:“保加利亚语”3:“加泰罗尼亚语”4:“中文”5:“克罗地亚语”6:“捷克语”7:“丹麦语”8:“荷兰语”9:“英语”10:“爱沙尼亚语”11:“芬兰语”12:“法语”13:“德语”14:“希腊语”15:“希伯来语”16:“匈牙利语”17:“冰岛语”18:“印度尼西亚语”19:“意大利语”“20:”日语“21:”韩语“22:”拉脱维亚语“23:”立陶宛语“24:”挪威语“25:”波兰语“26:”葡萄牙语“27:”罗马尼亚语“28:”俄语“29:”塞尔维亚语“30:”斯洛伐克语“31:”斯旺尼亚语“32:”西班牙语“33:”瑞典语“34:”土耳其语“}

EN

回答 2

Stack Overflow用户

发布于 2021-07-01 16:39:35

欢迎来到stackOverflow,这个问题将会出现在Javascript section上。

代码语言:javascript
运行
复制
const obj = {1: "Arabic", ... }

对于你的问题,如果你需要一个排序的数组:

代码语言:javascript
运行
复制
const sorted = Object.values(obj).sort();

如果你需要一个带排序数组的对象:

代码语言:javascript
运行
复制
const newObj = {}
sorted.forEach((name, index) => newObj[index] = name)
票数 0
EN

Stack Overflow用户

发布于 2021-07-01 17:00:33

实际上,它是一个对象,而不是给定输入的数组。我们不能对对象进行排序,但我们可以通过覆盖Iterator接口来确定对象的迭代顺序,如下所示:

代码语言:javascript
运行
复制
const myObj = {
  1: "Arabic",
  2: "Bulgarian",
  3: "Catalan",
  4: "Chinese",
  5: "Croatian",
  6: "Czech",
  7: "Danish",
  8: "Dutch",
  9: "English",
  10: "Estonian",
  11: "Finnish",
  12: "French",
  13: "German",
  14: "Greek",
  15: "Hebrew",
  16: "Hungarian",
  17: "Icelandic",
  18: "Indonesian",
  19: "Italian",
  20: "Japanese",
  21: "Korean",
  22: "Latvian",
  23: "Lithuanian",
  24: "Norwegian",
  25: "Polish",
  26: "Portuguese",
  27: "Romanian",
  28: "Russian",
  29: "Serbian",
  30: "Slovak",
  31: "Slovenian",
  32: "Spanish",
  33: "Swedish",
  34: "Turkish",
  35: "Afrikaans",
};

myObj[Symbol.iterator] = function* () {
  const entries = Object.entries(this).sort((a, b) => a[1].localeCompare(b[1]));

  for (const [key, value] of entries) {
    // you could determine what structure looks like here
    yield { [key]: value };
  }
};

for (const x of myObj) {
  console.log(x);
}

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

https://stackoverflow.com/questions/68206846

复制
相关文章

相似问题

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