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

问题描述 投票:0回答:3

我只是试图从After Effects ScriptUI API创建一个包含多个控件的对象。

这是我的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'
  })
}

例如,如果我知道尝试返回lengtheaseyPeasy.inputs,我只会得到undefined

alert(easeyPeasy.inputs.length)

此外,我无法通过键索引选择obj中的值。它仅通过密钥字符串起作用。

正在工作:

alert(easeyPeasy.inputs["easeIn_input"])

不工作:

alert(easeyPeasy.inputs[0])

有人知道我在这里想念的吗?在此先感谢

javascript json key extendscript adobe-scriptui
3个回答
4
投票

您似乎期望JavaScript对象的行为类似于PHP数组。他们没有。

数组具有名称为数字的属性和一个长度属性,该属性等于最高数值属性的名称加一。

对象只是具有命名属性。

您可以使用Object.keys()在对象中生成属性名称数组。

Object.keys()

0
投票

如果要遍历对象的属性,也可以使用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") ); }

示例

for-in

-1
投票

您已经创建了一个Javascript对象;它只存储可通过键访问的值。

要确定字符长度,您需要先将其转换为字符串表示形式:

var obj = {
  test1:"test1",
  var1:10,
  var2:20,
  var3:30
}

for (var key in obj){
  document.write(key + " :  " + obj[key] + "<br/>");
}
© www.soinside.com 2019 - 2024. All rights reserved.