Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/408.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如果键是对象,如何从映射中的键获取值_Javascript_Class - Fatal编程技术网

Javascript 如果键是对象,如何从映射中的键获取值

Javascript 如果键是对象,如何从映射中的键获取值,javascript,class,Javascript,Class,如果我的键值是这样的对象,如何从贴图对象中获取键值 const map1 = new Map(); map1.set({x:0,y:0}, 'val'); console.log(map1.get({x:0,y:0})); //output: undefined 我正在创建一个键值的地图,键值是一个点,x点和y点的对象,val是一个生物,因此等于“测试”。我需要在代码中更改什么才能从这个键对象获得这个测试值 class Board { constructor() {

如果我的键值是这样的对象,如何从贴图对象中获取键值

const map1 = new Map();
map1.set({x:0,y:0}, 'val');

console.log(map1.get({x:0,y:0}));
//output: undefined
我正在创建一个键值的地图,键值是一个点,x点和y点的对象,val是一个生物,因此等于“测试”。我需要在代码中更改什么才能从这个键对象获得这个测试值

class Board {
    constructor() {
        this.map = new Map();
    }
    add(point, creature) {
        this.map.set(point, creature)

    }
    getVal(aX, aY) {
        console.log(this.map) // Map { Point { x: 0, y: 0 } => Creature {} }
        console.log(new Point(aX, aY)) //output: {x:0,y:0}
        console.log(this.map.get(new Point(aX, aY))) //output: undefined
        return this.map.get(new Point(aX, aY))
    }
}

class Point {
    constructor(aX, aY) {
        this.x = aX;
        this.y = aY;
    }
}

function test() {
    let board = new Board();
    board.add(new Point(0, 0), 'test');

    return cretureFromBoard = board.getVal(0, 0);
}
console.log('test()', test())


它需要是一个与键相等的对象,而不仅仅是任何碰巧具有相同结构和值的对象

例如:

a={x:0,y:0};
b={x:0,y:0};
console.log(a==b);//假的
因此,您需要将关键对象保留在某个位置,并使用该对象:

const map1=new Map();
var key={x:0,y:0};
map1.set(键“val”);
console.log(map1.get(key));//“瓦尔”
或者使用其他更方便的等式语义作为键