简体   繁体   English

为什么我的 json 格式的 OBJ 没有长度

[英]How it comes that my json formatted OBJ doesn't have a length

I am just trying to create an Object containg several Controls from After Effects ScriptUI API.我只是想从 After Effects ScriptUI API 创建一个包含多个控件的对象。

This is what my obj looks like:这是我的 obj 的样子:

var easeyPeasy = {};

// groups
easeyPeasy.groups = {
  "easeIn_grp": ease__Panel.add('group', undefined, {
    name: 'easeIn group'
  }),
  "easyEase_grp": ease__Panel.add('group', undefined, {
    name: 'easyEase group'
  }),
  "easeOut_grp": ease__Panel.add('group', undefined, {
    name: 'easeOut group'
  })
};

// labels
easeyPeasy.label = {
  "easeIn_label": easeyPeasy.groups["easeIn_grp"].add('statictext', undefined, 'ease in:', {
    name: 'easeIn_label'
  }),
  "easyEase_label": easeyPeasy.groups["easyEase_grp"].add('statictext', undefined, 'easy ease: ', {
    name: 'easyEase_label'
  }),
  "easeOut_label": easeyPeasy.groups["easeOut_grp"].add('statictext', undefined, 'ease out:', {
    name: 'easeOut_label'
  })
};

// slider
easeyPeasy.slider = {
  "easeIn_slider": easeyPeasy.groups["easeIn_grp"].add('slider', undefined, 50, 0, 100, {
    name: 'easeIn_slider'
  }),
  "easyEase_slider": easeyPeasy.groups["easyEase_grp"].add('slider', undefined, 50, 0, 100, {
    name: 'easyEase_slider'
  }),
  "easeOut_slider": easeyPeasy.groups["easeOut_grp"].add('slider', undefined, 50, 0, 100, {
    name: 'easeOut_slider'
  })
}

// inputs
easeyPeasy.inputs = {
  "easeIn_input": easeyPeasy.groups["easeIn_grp"].add('edittext', undefined, 50, {
    name: 'easeIn_input'
  }),
  "easyEase_input": easeyPeasy.groups["easyEase_grp"].add('edittext', undefined, 50, {
    name: 'easyEase_input'
  }),
  "easeOut_input": easeyPeasy.groups["easeOut_grp"].add('edittext', undefined, 50, {
    name: 'easeOut_input'
  })
}

if I know try to return the length of my easeyPeasy.inputs for example I only get undefined如果我知道尝试返回我的easeyPeasy.inputslength ,例如我只会得到undefined

alert(easeyPeasy.inputs.length)

Besides that I can't select values in my obj via key index.除此之外,我无法通过键索引选择 obj 中的值。 It only works via key string.它只能通过密钥字符串工作。

working:在职的:

alert(easeyPeasy.inputs["easeIn_input"])

not working:不工作:

alert(easeyPeasy.inputs[0])

Does anyone know what I am missing here?有谁知道我在这里想念什么? Thanks in advance提前致谢

You seem to be expecting JavaScript objects to behave like PHP arrays.您似乎希望 JavaScript 对象的行为类似于 PHP 数组。 They don't.他们没有。

Arrays have properties whose names are numbers and a length property which is equal to the name of the highest numerical property plus one.数组具有名称为数字的属性和一个长度属性,该属性等于最高数字属性的名称加一。

Objects just have named properties.对象只有命名属性。

You can generate an array of property names in an object with Object.keys() .您可以使用Object.keys()在对象中生成一组属性名称。

 var data = { foo: "foo_val", bar: "bar_val" }; var props = Object.keys(data); for (var i = 0; i < props.length; i++) { document.body.appendChild( document.createTextNode( data[props[i]] ) ) document.body.appendChild( document.createElement("br") ); }

You have created a Javascript object;您已经创建了一个 Javascript 对象; it just stores values accessible via keys.它只存储可通过键访问的值。

To determine the length in characters, you need to convert it to a string representation first:要确定以字符为单位的长度,您需要先将其转换为字符串表示形式:

var json = JSON.stringify(easeyPeasy)

If you want to loop over properties of an object, you can also use for-in如果要遍历对象的属性,也可以使用for-in

Example例子

 var obj = { test1:"test1", var1:10, var2:20, var3:30 } for (var key in obj){ document.write(key + " : " + obj[key] + "<br/>"); }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 使用jQuery将obj格式化为json - obj formatted to json using jquery 我的Java脚本数组没有长度 - My java script array doesn't have a length 我刚刚格式化数字以逗号显示,但现在我的计算器不起作用? - I have just formatted numbers to appear with commas but now my calculator doesn't work? 在JavaScript中,不具有属性“ foo”的对象“ obj”如何使用obj [“ foo”]赋值? - In JavaScript, how does an object “obj” that doesn't have the property named “foo” be able to give a value using obj[“foo”]? JS数组显然没有长度 - JS array apparently doesn't have a length CKEDITOR不会设置来自数据库的文本的样式 - CKEDITOR doesn't style my text that comes from the DB JSON:如何添加到没有键的字段? - JSON: how do you add to a field that doesn't have a key? 如何从我的JSON obj中删除0和1 - How to remove 0s and 1s from my JSON obj 检查通过服务器内联加载的现有JSON obj,以确定工厂是否应该调用以获取相同的obj(如果尚不存在) - Checking for existing JSON obj loaded inline via server to determine if the factory should make a call to get the same obj if it doesn't yet exist 由于我格式化了计算机,因此出现“不存在“ Access-Control-Allow-Origin”标头……”错误……怎么回事? - Since I formatted my pc, I get a “No 'Access-Control-Allow-Origin' header is present…” error… How comes?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM