繁体   English   中英

从OrderedMap删除元素并保持其顺序

[英]Deleting element from OrderedMap and keeping its order

我想创建具有键和值的Map,并在其中保留元素的顺序。

该顺序定义了在屏幕上显示元素的顺序。

另外,我希望可以删除其中一个元素并保持其顺序。

最重要的是我正在使用immutable.js库,并且想使用它。 我可以用那个库吗?

那就是我测试的内容:

const { OrderedMap } = require("immutable");

let test = OrderedMap({ 
    a: 10, 
    b: 20, 
    c: 30, 
    d: 40
});

test = test.delete('b');

console.log(test);

它打印出我这样: IMG

我原本期望a,c,d的顺序,但是得到a,d,c。

更新

这是一个JSFiddle

控制台-我所拥有的

我该如何解决?

我创建了一个存储来重现您的问题,但无法。

我在删除项目之前添加了console.log() ,以确保在修改之前test具有正确顺序的键。 这是我的输出:

~/code/src/github.com/asday/immutablejs-delete-from-ordered-map $ node index.js
OrderedMap { "a": 10, "b": 20, "c": 30, "d": 40 }
OrderedMap { "a": 10, "c": 30, "d": 40 }

您在其中运行代码的环境可能不OrderedMap()提供给OrderedMap()的键的顺序。 如果是这种情况,请尝试使用[key, value]对数组实例化它:

let test = OrderedMap([
    ['a', 10],
    ['b', 20],
    ['c', 30],
    ['d', 40],
]);

并查看是否可以解决您的问题。


编辑:您的问题是您正在尝试使用OrderedMap的内部,而您应该使用在其上定义的方法。 如您所见, ._map的内容顺序无关紧要:

> test.toString()
"OrderedMap { "a": 10, "c": 30, "d": 40 }"

如果要按顺序遍历值,则应使用.map()如下所示:

test.map((x) => console.log(x))

要么:

test.mapEntries((x) => console.log(x[0], x[1]))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM