我有一些表示为数组的数据集,我想将其作为属性放入对象中。我希望每个属性都可以通过生成的键访问。数组中元素的数量和类型未知。我希望它看起来像这样:
// 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)])
希望我的描述很好,谢谢您的提前帮助
答案 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]);
如果相反,您想使用数组并基于该数组创建密钥,那么我现在想到的唯一解决方案是使用toString
和btoa
的组合(或者简单地使用后者,因为它接受数组参数)。但是,此方法有一些限制,例如何时数组包含对象和函数。
示例:
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)]);