首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从Json数组获取属性,并将它们添加到js对象中。

从Json数组获取属性,并将它们添加到js对象中。
EN

Stack Overflow用户
提问于 2017-10-02 21:34:05
回答 1查看 2.8K关注 0票数 0

你好,我正在尝试用threejs来创建cms,并且我想将json属性添加到一个由三个of组成的网格中。我可以通过以下方式检索json属性:

代码语言:javascript
复制
console.log(Articles.results[i].id);

但我想要,例如,有mesh.id等。

我的json输出是:

代码语言:javascript
复制
{id: 6, title: "ytc zjzx", summary: "zxv xzcv xcvzx", content: "zxvxcbvcx bcvbdf", publicationDate: 1506632400}
length
:
2
__proto__
:
Array(0)
totalRows
:
2
__proto__
:
Object

到目前为止我的代码是:

代码语言:javascript
复制
function addGeometry() {
    var geometry = new THREE.BoxBufferGeometry(25, 25, 25);
    var material = new THREE.MeshBasicMaterial({color:0x00ff44});


for(var i = 0; i < Articles.results.length; i += 1){

console.log(Articles);

mesh = new THREE.Mesh( geometry, material );

    mesh.position.y =Math.random() * ((HEIGHT-10) - (HEIGHT+10));
    mesh.position.x =Math.random() * ((HEIGHT-10) - (HEIGHT+10));


     mesh.updateMatrix();
     mesh.matrixAutoUpdate = false;
     scene.add( mesh );

}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-03 08:27:56

您可以使用Object.keys()获取对象的属性。然后使用括号表示法将该属性分配给网格:

代码语言:javascript
复制
// Assuming this is your object
var obj = Articles.results[i];    

var keyNames = Object.keys(obj);

keyNames.forEach(v => {
    // v is the name of the property (e.g. "id", "title")
    mesh[v] = obj[v]
});

然后,您将它们分配到您的网格中,您应该能够在以后访问它们。使用这种方法的好处是它非常灵活。即使您的JSON发生了更改,它也会同样工作。

这是一个工作的钢笔

请注意,Object3D已经包含一个id属性,因此您将覆盖该属性。首先检查一下您在JSON中放了什么。

另一种选择是将一个对象附加到网格上,并在那里赋值。类似于:

代码语言:javascript
复制
mesh.info[v] = obj[v];

然后,您可以像mesh.info.id一样访问它,而不会丢失以前的值。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46534051

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档