如何在javascript

时间:2017-12-11 13:33:51

标签: javascript jquery

我希望能够在js

中获取和使用所选对象的键

假设我有以下包含其他对象的对象

verts = { A: {x: 7.5, y: 0, z: -7.5}, B: {x: 0, y: 0, z: -15 }

如果我可以使用以下内容访问项目A;

console.log(verts.A)

它将显示对象内的值(即x:7.5,y:0,z:-7.5)但我不知道如何访问所选对象键,即在这种情况下为“A”。我希望能够将它存储为变量,以便稍后用作字符串。感觉我应该能够以某种方式在某个地方写这个。键或这个[键],但我在这里找不到合适的答案。我正在使用jquery,所以如果有一个快速的方式使用谢谢你。

感谢任何建议

2 个答案:

答案 0 :(得分:1)

使用密钥读取对象后,不再有链接返回您使用的密钥。

您可以做的最好的事情是将您正在使用的密钥存储在变量中,然后使用方括号表示法来读取它:

var verts = { A: {x: 7.5, y: 0, z: -7.5}, B: {x: 0, y: 0, z: -15 } };
var key = 'A';
var result = verts[key];

console.log(key, result);

另一个选择是通过预处理器运行初始对象来构建此链接:

function preProcess(input){
    return Object.keys(input).reduce( function(p,c){
      var newObj = input[c];
      newObj._key = c;
      p[c] = newObj
      return p
    },{});
}

var verts = { A: {x: 7.5, y: 0, z: -7.5}, B: {x: 0, y: 0, z: -15 } };
var vertsWithKeys = preProcess(verts);

var item = verts.A;
console.log(item._key, item);

答案 1 :(得分:0)

你让它变得更加复杂。如果您在某些时候知道您正在使用哪些密钥(而且似乎是这样),那么您需要做的就是确保将这些密钥传递给需要它们的任何密钥。

像这样:

//vertices stored as objects
verts = { A: {x: 7.5, y: 0, z: -7.5}, B: {x: 0, y: 0, z: -15}, C: {x: 0, y: 0, z: -7.5} }

//make a triangle using accessed vertices
makeTriangle(verts, 'A', 'B', 'C')

function makeTriangle(vertices, key1, key2, key3){
    $("example").append('\
    <a-triangle\
        id="' + key1 + '_'+ key2 + '_'+ key3 + '"\
        vertex-a="' + vertices[key1](joined) + '"\
        vertex-b="' + vertices[key2](joined) + '"\
        vertex-c="' + vertices[key3](joined) + '"\
    </a-triangle>');
}