Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/461.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-如何;“concatinate”;财产_Javascript_Properties_Three.js - Fatal编程技术网

javascript-如何;“concatinate”;财产

javascript-如何;“concatinate”;财产,javascript,properties,three.js,Javascript,Properties,Three.js,我正在从json中检索three.js场景的值 现在我想将“position.x:1”之类的数据转换为object[position][x]=1 对象[键]=值不起作用。显然,因为它使对象[position.x]=1 我该如何做,或者这种过程是如何调用的 谢谢。没有内置的功能 但是有很多第三方模块可用于此任务 例如,您可以使用的\uu.set。文档是独立的,您也可以通过使用包来单独使用它,而无需添加完整的lodash包 例如,从文档中: var object={'a':[{'b':{'c':3}

我正在从json中检索three.js场景的值

现在我想将“position.x:1”之类的数据转换为object[position][x]=1

对象[键]=值不起作用。显然,因为它使对象[position.x]=1

我该如何做,或者这种过程是如何调用的


谢谢。

没有内置的功能

但是有很多第三方模块可用于此任务

例如,您可以使用的
\uu.set
。文档是独立的,您也可以通过使用包来单独使用它,而无需添加完整的
lodash

例如,从文档中:

var object={'a':[{'b':{'c':3}]};
_.set(对象'a[0].b.c',4);
console.log(object.a[0].b.c);
// => 4
_.set(对象,['x','0','y','z'],5);
console.log(object.x[0].y.z);
// => 5

如果您不喜欢
\uu.set
,则有。

您可以这样做:

var string=“position.x:1”;
var split=string.split(/\.\124;\:/);//按“.”和“:”将strig拆分为一个数组
var obj={};//结果对象
函数getObject(拆分){
obj[split[0].trim()]={};
obj[split[0].trim()][split[1].trim()]=split[2].trim();
}
getObject(拆分);//调用函数并传递值数组
console.log(obj);//打印整个结果对象

console.log(obj['position']['x']);//打印obj['position']['x']
我认为编辑之前您的答案更好。那个自己的版本有潜在的原型污染问题,有时间复杂度问题,并且可能导致堆栈溢出。你能详细说明一下原型污染和时间复杂度吗?后者是关于重复的
切片的吗?关于堆栈溢出,这当然是正确的,但是我们必须有一个非常长的属性路径,我为了简单而牺牲了这个机会。这个版本显然也没有检查子路径的存在,所以是的,我可以做例如
set(某物,{length:123},x)
set(某物,{slice:'oh no'},x)
诸如此类,它会崩溃,但它也会在
集(某物,'nonexisting.abc',x)上崩溃。
此时,我再次删除了它(你可以在中看到它),因为我添加它的唯一原因是在帖子本身中显示一个示例实现,而不仅仅是链接到包。不过,我仍然对您的答案感兴趣。将其移到此处: