对象中的数组属性

时间:2018-03-13 16:20:58

标签: javascript

有没有办法为对象中的属性设置数组?

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

1 个答案:

答案 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.