有没有办法为对象中的属性设置数组?
var x = { [100, 200]: [a,b,c], [100, 300]: [a,b,c], [200, 300]: [a,b,c] }
我想要做的是,如果属性数组不存在,请向对象添加新点。上面这行不起作用,那么最好的方法是什么呢?
我想使用该对象打印出来看起来像:
100 200 a b c
100 300 a b c
200 300 a b c
答案 0 :(得分:0)
您可以使用Map
对象,它允许任何东西成为关键。为了通过键检索,您可以使用Map.get
并添加一个值(在声明之外),您可以使用Map.set
- 使用数组作为关键点的一个警告是它是一个参考数据类型。它是指向数据的指针,而不是数据本身。这意味着您必须先将变量存储,然后才能将其用作获取或设置的关键字。作为一个例子
let a = [1,2,3];
Map.set(a, "test");
Map.get(a); // test
会起作用,但是
Map.set([1,2,3], "test");
Map.get([1,2,3]); // undefined
无效。
使用您当前数据集的声明示例:
var x = new Map( [ [[100, 200], ["a","b","c"]], [[100, 300], ["a","b","c"]], [[200, 300], ["a","b","c"]] ]);
x.forEach((value, key, map) => {
console.log(`${key} ${value}`);
});
获取示例:
let x = new Map(), a = [3,4,5];
x.set([1,2,3], "example");
console.log( x.get([1,2,3]) );
// will not work because an array is a referential data type
x.set(a, "other example");
console.log(x.get(a));
// will work because your array is a variable.