相关疑难解决方法(0)

JavaScript是否保证对象属性顺序?

如果我创建这样的对象:

var obj = {};
obj.prop1 = "Foo";
obj.prop2 = "Bar";
Run Code Online (Sandbox Code Playgroud)

生成的对象总是这样吗?

{ prop1 : "Foo", prop2 : "Bar" }
Run Code Online (Sandbox Code Playgroud)

也就是说,属性是否与我添加它们的顺序相同?

javascript object

584
推荐指数
11
解决办法
20万
查看次数

如何迭代JavaScript对象?

我在JavaScript中有一个对象:

{
    abc: '...',
    bca: '...',
    zzz: '...',
    xxx: '...',
    ccc: '...',
    // ...
}
Run Code Online (Sandbox Code Playgroud)

我想使用for循环来获取其属性.我想在部分中迭代它(不是一次所有的对象属性).

使用简单的数组我可以使用标准for循环:

for (i = 0; i < 100; i++) { ... } // first part
for (i = 100; i < 300; i++) { ... } // second
for (i = 300; i < arr.length; i++) { ... } // last
Run Code Online (Sandbox Code Playgroud)

但是如何用物体做呢?

javascript iteration loops object javascript-objects

361
推荐指数
7
解决办法
40万
查看次数

地图和字典有什么区别?

我知道地图是一种将键映射到值的数据结构.字典不一样吗?地图和字典1有什么区别?


1.我不是在询问它们是如何在X或Y语言中定义的(这似乎是人们通常在这里提出的问题),我想知道它们在理论上的区别.

language-agnostic dictionary key-value data-structures

168
推荐指数
4
解决办法
7万
查看次数

ES6 Map和WeakMap有什么区别?

看看这个这个 MDN页面,似乎地图和WeakMaps之间的唯一区别是WeakMaps缺少"大小"属性.但这是真的吗?他们之间有什么区别?

javascript ecmascript-harmony weakmap ecmascript-6

83
推荐指数
6
解决办法
2万
查看次数

ES6中的地图与对象,何时使用?

参考:MDN地图

当密钥未知时直到运行时,并且当所有键都是相同类型且所有值都是相同类型时,请使用对象上的映射.

当存在对各个元素进行操作的逻辑时使用对象.

题:

在对象上使用地图的适用示例是什么?特别是"什么时候直到运行时才能知道密钥?"

var myMap = new Map();

var keyObj = {},
    keyFunc = function () { return 'hey'},
    keyString = "a string";

// setting the values
myMap.set(keyString, "value associated with 'a string'");
myMap.set(keyObj, "value associated with keyObj");
myMap.set(keyFunc, "value associated with keyFunc");

console.log(myMap.get(keyFunc));
Run Code Online (Sandbox Code Playgroud)

javascript javascript-objects ecmascript-6

80
推荐指数
5
解决办法
2万
查看次数

你如何JSON.stringify ES6地图?

我想开始使用ES6 Map而不是JS对象,但我被阻止了,因为我无法弄清楚如何使用JSON.stringify()一个Map.我的密钥保证是字符串,我的值将始终是列表.我是否真的必须编写一个包装器方法来序列化?

javascript json dictionary ecmascript-6

71
推荐指数
10
解决办法
3万
查看次数

如何在本地存储(或其他地方)中保留ES6地图?

var a = new Map([[ 'a', 1 ]]);
a.get('a') // 1

var forStorageSomewhere = JSON.stringify(a);
// Store, in my case, in localStorage.

// Later:
var a = JSON.parse(forStorageSomewhere);
a.get('a') // TypeError: undefined is not a function
Run Code Online (Sandbox Code Playgroud)

不幸的是JSON.stringify(a);简单地返回'{}',这意味着当恢复时它变成一个空对象.

我发现es6-mapify允许在Map和普通对象之间进行向上/向下转换,因此这可能是一个解决方案,但我希望我只需依靠外部依赖来持久保存我的地图.

javascript json dictionary ecmascript-6

61
推荐指数
5
解决办法
1万
查看次数

Map 和 Record 有什么区别

我不太明白 Typescript 中 Map 和 Record 之间的区别是什么。

我发现的唯一比较是

Typescript 2.1 引入的一个非常有用的内置类型是 Record:它允许您创建类型化映射,非常适合创建复合接口。

https://levelup.gitconnected.com/advanced-typescript-types-with-examples-1d144e4eda9e

但是像这样输入地图:

const testMap = new Map<number, string>();
Run Code Online (Sandbox Code Playgroud)

也有效,所以我不太明白其中的区别。

typescript typescript-typings

49
推荐指数
0
解决办法
2万
查看次数

Javascript Map对象如何改进我们的编码?

如果我们可以使用javascript对象创建键/值对,那么假设是什么用于ES6新的Map()对象?

我什么时候应该使用另一个?Map是限制为值还是包含函数?

javascript ecmascript-6

21
推荐指数
2
解决办法
1267
查看次数

Javascript对象与地图性能(Chrome,V8,Node JS)

我想要了解是否使用JS对象或地图,如果我需要在大型数据集(> 1000个对象)中按字符串键进行随机查找.

我写了一个简单的基准http://jsperf.com/javascript-objects-vs-map-performance,结果显示在Chrome(V8)中,对象的表现比你好大约2倍.但是,我检查了其他浏览器,结果则相反.为什么它们在各种浏览器/引擎中有所不同?

我还在Node.JS中编写了类似的测试,我看不到类似的结果(测试用例6比测试用例4要多得多):

测试

var now = require("performance-now");

var mapKeyValue = new Map();
var mapStringKeyValue = new Map();
var objectKeyValue = {};
var n = 10000;
var testSamples = 100;

var firstRow = 0;
var firstRowString = firstRow + "";

var middleRow = Math.floor(n / 2);
var middleRowString = middleRow + "";

var lastRow = n - 1;
var lastRowString = lastRow + "";

var nonExist = n * 2;
var nonExistString = nonExist + "";

function …
Run Code Online (Sandbox Code Playgroud)

javascript maps object

19
推荐指数
2
解决办法
9849
查看次数