js json问题

gaoyinrui 2013-10-10 05:44:12

var data = [
{
"Name": "鸟瞰1",
"id": "1",
"x": "-15.7304939843579",
"y": "-193.351530865896",
"z": "172.79275048241"
},
{
"Name": "鸟瞰2",
"id": "2",
"x": "-15.7304939843579",
"y": "-193.351530865896",
"z": "172.79275048241"
},
{
"Name": "鸟瞰3",
"id": "3",
"x": "-15.7304939843579",
"y": "-193.351530865896",
"z": "172.79275048241"
}
];


一段json,怎么根据id获取其他属性。如:根据id:2,获取其对应的NAME、x、y、z
...全文
171 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
申祷无 2013-10-11
  • 打赏
  • 举报
回复
var newData = {};
for( i = 0; i < data.length; i++ )
  newData[ data[ i ].id ] = data[ i ];
newData[ '1' ];
  • 打赏
  • 举报
回复
这里你的 data[1]= { "Name": "鸟瞰2", "id": "2", "x": "-15.7304939843579", "y": "-193.351530865896", "z": "172.79275048241" } so
引用 2 楼 rui888 的回复:
循环了
for(var i=0;i<data.length;i++){
  if(data[i].id=="2"){
  alert(data[i].Name+"----"+data[i].x+"----"+data[i].y+"----"+data[i].z);
  }
}
+1
tony4geek 2013-10-11
  • 打赏
  • 举报
回复
循环了
for(var i=0;i<data.length;i++){
  if(data[i].id=="2"){
  alert(data[i].Name+"----"+data[i].x+"----"+data[i].y+"----"+data[i].z);
  }
}
notlikeGaoShou 2013-10-11
  • 打赏
  • 举报
回复
引用 3 楼 ShenShiampMoYi 的回复:
这里你的 data[1]= { "Name": "鸟瞰2", "id": "2", "x": "-15.7304939843579", "y": "-193.351530865896", "z": "172.79275048241" } so [quote=引用 2 楼 rui888 的回复:] 循环了
for(var i=0;i<data.length;i++){
  if(data[i].id=="2"){
  alert(data[i].Name+"----"+data[i].x+"----"+data[i].y+"----"+data[i].z);
  }
}
+1[/quote]正解,这个我只有用循环去挨个判断啦 但是如果可以的话可以换个json结构 如

var data={
 "1":{"name":"鸟瞰1", "x": "-15.7304939843579","y": "-193.351530865896","z": "172.79275048241"},
"2"::{"name":"鸟瞰2", "x": "-15.7304939843579","y": "-193.351530865896","z": "172.79275048241"}
}
那么可以通过键获取值啦 var item=data["2"]; name=items.name;//“鸟瞰2”
garfieldzf 2013-10-11
  • 打赏
  • 举报
回复
http://www.jb51.net/article/35510.htm 看看这个对你有帮助没,我记得以前看过一篇文章,js也能像委托那样使用。
申祷无 2013-10-11
  • 打赏
  • 举报
回复
var newData = {};
for( i = 0; i < data.length; i++ )
  newData[ data[ i ].id ] = data[ i ];
newData[ '1' ].Name;
4楼的那个少个Name。 如果数据量比较大,使用的次数比较多的话这样效率应该能高一点,不过我不敢确定。
冰糖-雪梨 2013-10-11
  • 打赏
  • 举报
回复

<!doctype html>
<html lang='zh_CN'>
<head>
<meta charset='utf-8' />
<title>程序升级中...</title>
<script type="text/javascript">
var data = [
      {
        "Name": "鸟瞰1",
        "id": "1",
        "x": "-15.7304939843579",
        "y": "-193.351530865896",
        "z": "172.79275048241"
      },
      {
        "Name": "鸟瞰2",
        "id": "2",
        "x": "-15.7304939843579",
        "y": "-193.351530865896",
        "z": "172.79275048241"
      },
      {
        "Name": "鸟瞰3",
        "id": "3",
        "x": "-15.7304939843579",
        "y": "-193.351530865896",
        "z": "172.79275048241"
      }
];
function get_by_id(id,data){
	for(var i=0;len=data.length,i<len;i++){
		if(data[i].id==id)
			return data[i];
	}
	return false;
}
console.log(get_by_id(3,data).Name);
//输出鸟瞰3
</script>
</head>
<body>
	<h2 style='text-align:center;'>程序升级中,请稍后访问...</h2>
</body>
</html>
天际的海浪 2013-10-10
  • 打赏
  • 举报
回复
你这个结构只能用遍历方法

87,991

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧