-3

给定一个对象字面量:

var data = {
   { "A": 3, "B": 4, "C²": 25, "C": 5 } // hint: triangle
}

其中值之间存在数学关系(C² = A² + B²)。

是否有可能进行一些“内部操作”,例如:

var data = {
   { "A": 3, "B": 4, "C²": (Math.pow(A,2)+Math.pow(B,2)), "C": Math.sqrt("C²") } // hint: triangle
}

我将有一组 +200 A、B 值,我希望从中计算 C 值,然后重用它。

如果可能,该怎么做?


编辑:我将其用作本地数据,而不是作为跨网络的交换格式。

4

2 回答 2

1

不,这是不可能的。

但是,您可以在那里保存一个值"operation" : "calculateTriangle",然后根据该值执行操作。

于 2013-09-26T09:12:12.187 回答
1
function buildTriangleObject(a, b) {
    var square = Math.pow(a, 2) + Math.pow(b, 2);
    return {
        A: a,
        B: b,
        "C²": square,
        C: Math.sqrt(square)
    };
}

var triangles = [],
    triangle = buildTriangleObject(3, 4), //Object
    stringified = JSON.stringify(triangle), //String, will be '{"A":3,"B":4,"C²":25,"C":5}'
    parsed = JSON.parse(stringified); //Object, equals triangle
triangles.push(triangle);

做你想要实现的事情有点复杂:你试图在另一个对象中引用一个对象的变量,这有点傻恕我直言(你可以这样做引用父对象然后是内部对象,但这是一团糟,相信我)。这样你就有了一个小助手函数,它为你创建对象,你可以用你喜欢的任何方式来操作它。

由于您正在寻找它的 JSON 表示,您可以简单地使用JSON.stringifyontriangles来获取整个数组的 JSON,然后简单地使用JSON.parse.

注意:我使用字符串来定义属性,您只能通过括号表示法检索它,否则您将Unexpected token ILLEGAL在控制台中获得一个。

于 2013-09-26T09:17:09.227 回答