Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/470.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 在对象内部获取对象';s位置_Javascript - Fatal编程技术网

Javascript 在对象内部获取对象';s位置

Javascript 在对象内部获取对象';s位置,javascript,Javascript,所以我有一个程序,里面有对象。稍后我需要访问objects属性,我给元素一个名为location的属性来保存这个属性。我有一个巨大的物体,看起来像这样 var story = Object() story.s1 = { lore:"Stuff", choices:[ {name:"Stuff",link:{lore:"Aye",choices:[]}}, {name:"Stuff",link:{lore:"Aye",choices:[]}}, {name:

所以我有一个程序,里面有对象。稍后我需要访问objects属性,我给元素一个名为location的属性来保存这个属性。我有一个巨大的物体,看起来像这样

var story = Object()
story.s1 = {
    lore:"Stuff",
    choices:[
    {name:"Stuff",link:{lore:"Aye",choices:[]}},
    {name:"Stuff",link:{lore:"Aye",choices:[]}},
    {name:"Stuff",link:{lore:"Aye",choices:[]}}
    ]
}
story.s1.choices[1].link.lore
<input location = "Put location string here" oninput = "parse(this.location)"/>
现在我有一个循环,它获取每个属性并检查它是否有单独的属性,最后的代码是这样的

var story = Object()
story.s1 = {
    lore:"Stuff",
    choices:[
    {name:"Stuff",link:{lore:"Aye",choices:[]}},
    {name:"Stuff",link:{lore:"Aye",choices:[]}},
    {name:"Stuff",link:{lore:"Aye",choices:[]}}
    ]
}
story.s1.choices[1].link.lore
<input location = "Put location string here" oninput = "parse(this.location)"/>
这是一个位置,我想将其作为属性(数据位置或位置)作为字符串放入HTML元素中,以便以后可以编辑该位置。当然,它只是运行代码并返回“是”,我无法将代码转换为字符串。有没有办法把这个变成一个字符串

所以,我试图实现的是将代码转换为未解析的字符串。例如,假设i为0,我希望

story.s1.choices[i].link.lore
进入

另外,一个很大的复杂性是,我有一个循环,它运行复杂的代码,如下所示:

story.eval("s"+i).choices[i].link.choices[i].link.choices[i]... etc.
为什么我需要这些?我要做这样的输入元素

var story = Object()
story.s1 = {
    lore:"Stuff",
    choices:[
    {name:"Stuff",link:{lore:"Aye",choices:[]}},
    {name:"Stuff",link:{lore:"Aye",choices:[]}},
    {name:"Stuff",link:{lore:"Aye",choices:[]}}
    ]
}
story.s1.choices[1].link.lore
<input location = "Put location string here" oninput = "parse(this.location)"/>


通过JavaScript制作一个编辑器,用于更改对象中的值,这是我正在开发的一个项目,旨在帮助自己创建分支故事。

而不是将您的“位置”表示为一个字符串,必须先创建字符串,然后将其解开,然后将其存储为一个函数,当应用于对象时,返回所需的“位置”:

现在,您可以传递此函数,或将其存储在变量中,当时间到来时,应用它

myLore = pickValue(story);
更高级一点的说明是,您可以创建一个函数,该函数创建一个获得第n个选项知识的函数:

function makeNthPicker(n) {
  return function(obj) {
    return obj.s1.choices[n].link.lore;
  };
}
现在你可以做了

firstPicker = makeNthPicker(0);
console.log(firstPicker(story);

您发布的内容不是有效的javascript
obj.attributes
是一个数组,但您试图将其实例化为一个对象。我知道。我需要更多的代码来实现我想要实现的目标,即以字符串的形式获取对象在对象中的位置。也许我只是在理解这个概念时遇到了一些困难,但我还没有完全理解您的要求。如果要在
属性中设置命名属性
,只需使用
{…}
将其实例化为对象,而不是
[…]
“我想将其作为字符串嵌入HTML元素”-你是说你想要像
这样的东西,然后在你的JS中读取
数据位置
属性,并使用它从
obj
中提取特定字段?请将这些细节直接放在你的问题中。请编辑你的
obj
定义,使之真正有效。。。这不是我想要的。。。如果我有一个更复杂的序列,例如story.s1.choices[0].link.choices[3].link.choices[2].link.choices[1].name,那么您的函数将无法运行。另外,如果我想稍后编辑该知识呢?这就是我想要的,看起来你不能在函数中编辑对象。这是一个很好的解决方案,但它不适合我编辑对象的需要。你需要更详细地解释你的需要。好吧,也许我有一个更大的对象,我在前面的评论中描述了这些选择。那我怎么去呢?不过,您的方法让我对如何实现这一点有了一些看法,我将尝试根据自己的目的对其进行修改。任何对对象内部的引用,无论多么复杂,都可以并且应该表示为一个函数或一系列函数,如果您正确构建它,可能包括使用函数来构建函数,如我所示。这些函数可以用动态的东西进行参数化,例如示例中的
i
。你的想法是将内部对象表示为字符串,这让你陷入了一个兔子洞。