创建数据哈希JS

时间:2018-08-05 15:05:31

标签: javascript hash javascript-objects

我有一些表示为数组的数据集,我想将其作为属性放入对象中。我希望每个属性都可以通过生成的键访问。数组中元素的数量和类型未知。我希望它看起来像这样:

// array - array on unknown data

let object = {};

object[createUniqueKey(array)] = array;

// and later i want to use it the same way
console.log(object[createUniqueKey(array)])

希望我的描述很好,谢谢您的提前帮助

1 个答案:

答案 0 :(得分:0)

创建唯一键以避免对象数据被覆盖的最简单方法是使用计数器,并在每次插入时对其进行递增。另外,您可以实现自己的UUID生成功能,但我不会走得太远。

示例:

let object = {};
let createUniqueKey = ((counter) => () => counter++)(0); 
let array = ["a", "b", "c"];

/* Create a unique key. */
let key = createUniqueKey();

/* Create a unique key to store the array. */
object[key] = array;

/* Use the key to get the array from the object. */
console.log(object[key]);

如果相反,您想使用数组并基于该数组创建密钥,那么我现在想到的唯一解决方案是使用toStringbtoa的组合(或者简单地使用后者,因为它接受数组参数)。但是,此方法有一些限制,例如何时数组包含对象和函数。

示例:

let object = {};
let createKey = (array) => btoa(array);
let array = ["a", "b", "c"];

/* Create a key to store the array. */
object[createKey(array)] = array;

/* Use the array to recreate the key and access the array inside the object. */
console.log(object[createKey(array)]);