当前位置: 首页 > 知识库问答 >
问题:

将js数组转换为Dictionary/HashMap

夏理
2023-03-14

我正在尝试将对象数组转换为HashMap。我只有ES6的某些部分可用,我也不能使用map

数组中的对象非常简单,例如{nation:{name:string,iso:string,scoringpoints:number}。我需要按scoringpoints对它们进行排序。现在我需要一个“字典”,按iso->{[iso:string]:number}保存排序。

我已经试过了(从这里(所以))

const dict = sortedData.reduce((prev, curr, index, array) => (
    { ...array, [curr.nation.iso]: ++index }
), {});

但是dict原来是一个对象,索引以0开始。希望有一个小东西我没有看到。但是目前我的脑子里想的是如何将一个简单的数组转换成一个类似HashMap的对象。也许array.map

我还应该注意,我使用的是typescript,我以前在没有正确键入时也遇到了一些麻烦。

const test = [
    { nation: { name: "Germany", iso: "DE", rankingPoints: 293949 } },
    { nation: { name: "Hungary", iso: "HU", rankingPoints: 564161 } },
    { nation: { name: "Serbia", iso: "SR", rankingPoints: 231651 } }
];

const sorted = test.sort((a, b) => a.nation.rankingPoints - b.nation.rankingPoints);
const dict = sorted.reduce((prev, curr, index, array) => ({ ...array, [curr.nation.iso]: ++index }), {});
console.log(JSON.stringify(dict));  
{
    "0": {
        "nation": {
            "name": "Serbia",
            "iso": "RS",
            "rankingPoints": 231651
        }
    },
    "1": {
        "nation": {
            "name": "Germany",
            "iso": "DE",
            "rankingPoints": 293949
        }
    },
    "2": {
        "nation": {
            "name": "Hungary",
            "iso": "HU",
            "rankingPoints": 564161
        }
    },
    "HU": 3
}
{
    "HU": 1,
    "DE": 2,
    "RS": 3
}

其中property-value是排序数据中的秩(+1),所以我可以通过访问dict[“de”]来获得秩,它将返回2

共有1个答案

戈华茂
2023-03-14

使用foreachreduce捕获每个键在数据中的位置:

const test = [
    { nation: { name: "Germany", iso: "DE", rankingPoints: 293949 } },
    { nation: { name: "Hungary", iso: "HU", rankingPoints: 564161 } },
    { nation: { name: "Serbia", iso: "SR", rankingPoints: 231651 } }
];    

const sorted = test.sort((a, b) => a.nation.rankingPoints - b.nation.rankingPoints);

// Using forEach:

var dict = {}
sorted.forEach((el, index) => dict[el.nation.iso] = sorted.length - index);

// Using reduce:

dict = sorted.reduce(
    (dict, el, index) => (dict[el.nation.iso] = sorted.length - index, dict),
    {}
);

console.log(dict)
console.log("dict['DE'] = ", dict['DE'])
 类似资料:
  • 问题内容: 我需要以数组格式发送一个到服务器。如何将其转换为。这是我必须通过的样本。 所需的格式是这样的 有人有解决办法吗?提前致谢。 问题答案:

  • 问题内容: 我的应用程序创建了一个JavaScript对象,如下所示: 但是我需要将此对象作为数组。 因此,我尝试通过遍历该对象并将该元素添加到数组来将该对象转换为数组: 有没有更好的方法将对象转换为数组或函数? 问题答案: 输出:

  • 问题内容: 我有一个包含几个整数的数组。我已经向数组添加了一些值,但是现在我需要通过jQuery的方法将此数组发送到页面。如何将其转换为JSON对象进行发送? 问题答案: 向后兼容的脚本:https : //github.com/douglascrockford/JSON- js/blob/master/json2.js 并致电: 注意: JSON对象现在是大多数现代Web浏览器(IE 8及更高版

  • 问题内容: 如何将数组转换为CSV文件? 这是我的数组: 问题答案: 我正在使用以下功能;它是对fputscsv注释中的man条目之一的改编。而且您可能想要展平该数组;不知道如果您传递一个多维的行会发生什么。

  • 问题内容: 我正在尝试将Java中的Javascript数组转换为Java数组。我正在使用javax.script包。我在这里测试了此示例,但是无法识别类型“ NativeArray” 我如何才能识别NativeArray类型? 问题答案: 按照这个答案,看来最好的选择是编写一个JavaScript转换器函数,该函数使用Rhino的Java绑定功能将本机JavaScript数组转换为Java数组。

  • 问题内容: 我有一个想要转换为纯JavaScript数组的json数组: 这是我的json数组: 如何将其转换为普通的javascript数组,如下所示: 问题答案: 已经是JS对象(不是JSON)。但是,您可以在这里: 编辑:将 元素插入数组中的正确位置。谢谢@RoToRa 也许一开始不创建此类对象会更容易。它是如何创建的?