获取对象位置内的对象

Get an object inside of an object's location

本文关键字:对象 位置 取对象 获取      更新时间:2023-09-26

所以我有一个程序,它的对象内部有对象。我稍后需要访问对象属性,并且我为元素提供了一个名为 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

这是我想作为属性(数据位置或位置)作为字符串放入 HTML 元素中的位置,以便以后可以编辑该位置。当然,它只是运行代码并给我"Aye",我无法将代码转换为字符串。有什么想法如何把它变成一个字符串吗?

因此,我试图实现的是将代码转换为未解析的字符串。例如,假设 i 是 0,我想使

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

"story.s1.choices[0].link.lore"

另外,这样做的一大复杂之处在于我有一个运行复杂代码的循环,如下所示:

story.eval("s"+i).choices[i].link.choices[i].link.choices[i]... etc.

为什么我需要所有这些?我要做这样的输入元素

<input location = "Put location string here" oninput = "parse(this.location)"/>
通过JavaScript制作

一个编辑器来更改对象中的值,这是我正在开发的一个项目,以帮助自己创建分支故事。

与其将

你的"位置"表示为一个字符串,必须创建该字符串,然后解开,不如将其存储为一个函数,当应用于对象时,返回所需的"位置":

function pickValue(obj) {
  return obj.s1.choices[0].link.lore;
}

现在你可以传递这个函数,或者把它存储在一个变量中,到时候,通过说

myLore = pickValue(story);
稍微高级一点,您可以创建一个函数,该函数

创建一个函数,该函数获取第 n个选择的传说:

function makeNthPicker(n) {
  return function(obj) {
    return obj.s1.choices[n].link.lore;
  };
}

现在你可以做

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