Javascript |对象、数组和函数

发布于 2024-12-23 01:19:03 字数 1133 浏览 0 评论 0原文

也许你可以帮助我。如何创建通过 id 返回对象值的全局对象和函数?

示例:

var chat = {
    data : {
      friends: {}
    }
}

....
/*
JSON DATA RETURNED:
{"users": [{"friend_id":"62","name":"name","username":"admin","thumb":"images/avatar/thumb_7d41870512afee28d91.jpg","status":"HI4","isonline":""},{"friend_id":"66","name":"Another name","username":"regi","thumb":"images/avatar/thumb_d3fcc14e41c3a77aa712ae54.jpg","status":"Всем привет!","isonline":"avtbsl0a6dcelkq2bd578u1qt6"},{"friend_id":"2679","name":"My name","username":"Another","thumb":"images/avatar/thumb_41effb41eb1f969230.jpg","status":"","isonline":""}]}
*/

onSuccess: function(f){
   chat.data.friends    = {};
   for(var i=0; i< f.users.length;i++){
      chat.data.friends.push(f.users[i])
   }
}

如何创建一个新函数(它将按friend_id返回值)?

get_data_by_id: function (what, friend_id) {

/*obj.what = getfrom_globalobject(chat.data.friends???)*/
}

使用示例:

var friend_name     = get_data_by_id(name, 62);
var friend_username = get_data_by_id(username, 62);
var friend_avatar   = get_data_by_id(thumb, 62);

may be you can help me. How can I create global object and function that return object values by id?

Example:

var chat = {
    data : {
      friends: {}
    }
}

....
/*
JSON DATA RETURNED:
{"users": [{"friend_id":"62","name":"name","username":"admin","thumb":"images/avatar/thumb_7d41870512afee28d91.jpg","status":"HI4","isonline":""},{"friend_id":"66","name":"Another name","username":"regi","thumb":"images/avatar/thumb_d3fcc14e41c3a77aa712ae54.jpg","status":"Всем привет!","isonline":"avtbsl0a6dcelkq2bd578u1qt6"},{"friend_id":"2679","name":"My name","username":"Another","thumb":"images/avatar/thumb_41effb41eb1f969230.jpg","status":"","isonline":""}]}
*/

onSuccess: function(f){
   chat.data.friends    = {};
   for(var i=0; i< f.users.length;i++){
      chat.data.friends.push(f.users[i])
   }
}

How can I create a new function (It will return values by friend_id)?

get_data_by_id: function (what, friend_id) {

/*obj.what = getfrom_globalobject(chat.data.friends???)*/
}

Example of use:

var friend_name     = get_data_by_id(name, 62);
var friend_username = get_data_by_id(username, 62);
var friend_avatar   = get_data_by_id(thumb, 62);

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

寒冷纷飞旳雪 2024-12-30 01:19:03

尝试:

get_data_by_id: function (what, friend_id) {
   return chat.data.friends[friend_id][what];
}

...但使用它:

var friend_name     = get_data_by_id('name', 62);

...并设置映射:

for(var i=0; i< f.users.length;i++){
  chat.data.friends[f.users[i].friend_id] = f.users[i];
}

Try:

get_data_by_id: function (what, friend_id) {
   return chat.data.friends[friend_id][what];
}

... but use it like:

var friend_name     = get_data_by_id('name', 62);

...and set up the mapping with:

for(var i=0; i< f.users.length;i++){
  chat.data.friends[f.users[i].friend_id] = f.users[i];
}
混吃等死 2024-12-30 01:19:03

您不能 .push() 到对象。对象是 key =>; value 映射,因此您需要使用 char.data.friends[somekey] = f.users[i];

如果您真的只想要一个带有数字键的列表,请制作 x5fastchat.data .friends 一个数组:x5fastchat.data.friends = [];

但是,由于您希望能够通过 friend_id 访问元素,因此请执行以下操作:

onSuccess: function(f){
   x5fastchat.data.friends = {};
   for(var i=0; i< f.users.length;i++){
      chat.data.friends[f.users[i].friend_id] = f.users[i]
   }
}

get_data_by_id: function (what, friend_id) {
    obj[what] = chat.data.friends[friend_id][what];
}

请注意obj[what] 而不是原来的 obj.what:编写 obj.what 时,what 的处理方式如下一个字符串,所以它等于 obj['what'] - 但由于它是一个函数参数,所以您需要 obj['what]

You cannot .push() to an object. Objects are key => value mappings, so you need to use char.data.friends[somekey] = f.users[i];

If you really just want a list with numeric keys, make x5fastchat.data.friends an array: x5fastchat.data.friends = [];

However, since you want to be able to access the elements by friend_id, do the following:

onSuccess: function(f){
   x5fastchat.data.friends = {};
   for(var i=0; i< f.users.length;i++){
      chat.data.friends[f.users[i].friend_id] = f.users[i]
   }
}

get_data_by_id: function (what, friend_id) {
    obj[what] = chat.data.friends[friend_id][what];
}

Note the obj[what] instead of your original obj.what: When writing obj.what, what is handled like a string, so it's equal to obj['what'] - but since it's a function argument you want obj[what].

那伤。 2024-12-30 01:19:03

看看下面的代码。您只需将其复制粘贴到 HTML 文件中并打开即可。单击“开始”,您应该会看到结果。如果我没有正确理解你的意思,请告诉我。 :

<script>

myObj = { "field1" : { "key1a" : "value1a" }, "field2" : "value2" }


function go()
{

    findField(myObj, ["field2"])
    findField(myObj, ["field1","key1a"])
}


function findField( obj, fields)
{

    var myVal = obj;
    for ( var i in fields )
    {
        myVal = myVal[fields[i]]
    }

    alert("your value is [" + myVal + "]");

}
</script>


<button onclick="go()">Go</button>

Take a look at the following code. You can simply copy paste it into an HTML file and open it. click "go" and you should see the result. let me know if I did not understand you correctly. :

<script>

myObj = { "field1" : { "key1a" : "value1a" }, "field2" : "value2" }


function go()
{

    findField(myObj, ["field2"])
    findField(myObj, ["field1","key1a"])
}


function findField( obj, fields)
{

    var myVal = obj;
    for ( var i in fields )
    {
        myVal = myVal[fields[i]]
    }

    alert("your value is [" + myVal + "]");

}
</script>


<button onclick="go()">Go</button>
清音悠歌 2024-12-30 01:19:03

我建议使用朋友对象,而不是通过 id 和名称获取它们。

DATA = {"users": [{"friend_id":"62","name":"name","username":"admin","thumb":"images/avatar/thumb_7d41870512afee28d91.jpg","status":"HI4","isonline":""},{"friend_id":"66","name":"Another name","username":"regi","thumb":"images/avatar/thumb_d3fcc14e41c3a77aa712ae54.jpg","status":"Всем привет!","isonline":"avtbsl0a6dcelkq2bd578u1qt6"},{"friend_id":"2679","name":"My name","username":"Another","thumb":"images/avatar/thumb_41effb41eb1f969230.jpg","status":"","isonline":""}]}

// simple data store definition
Store = {items:{}};
NewStore = function(items){
    var store = Object.create(Store); 
    store.items = items || {}; 
    return store 
};
Store.put = function(id, item){this.items[id] = item;};
Store.get = function(id){ return this.items[id]; };
Store.remove = function(id){ delete this.items[id]; };
Store.clear = function(){ this.items = {}; };

// example
var chat = {
    data : {
        friends : NewStore()
    }
}

// after data loaded
chat.data.friends.clear();
for( var i = 0; i < DATA.users.length; i += 1 ){
    var user = DATA.users[i];
    chat.data.friends.put( user.friend_id, user );
}

getFriend = function(id){ return chat.data.friends.get( id ); }

var friend = getFriend(66);
console.log(friend.name);
console.log(friend.username);
console.log(friend.thumb);

I would recommend using the friend objects rather than getting them by id and name.

DATA = {"users": [{"friend_id":"62","name":"name","username":"admin","thumb":"images/avatar/thumb_7d41870512afee28d91.jpg","status":"HI4","isonline":""},{"friend_id":"66","name":"Another name","username":"regi","thumb":"images/avatar/thumb_d3fcc14e41c3a77aa712ae54.jpg","status":"Всем привет!","isonline":"avtbsl0a6dcelkq2bd578u1qt6"},{"friend_id":"2679","name":"My name","username":"Another","thumb":"images/avatar/thumb_41effb41eb1f969230.jpg","status":"","isonline":""}]}

// simple data store definition
Store = {items:{}};
NewStore = function(items){
    var store = Object.create(Store); 
    store.items = items || {}; 
    return store 
};
Store.put = function(id, item){this.items[id] = item;};
Store.get = function(id){ return this.items[id]; };
Store.remove = function(id){ delete this.items[id]; };
Store.clear = function(){ this.items = {}; };

// example
var chat = {
    data : {
        friends : NewStore()
    }
}

// after data loaded
chat.data.friends.clear();
for( var i = 0; i < DATA.users.length; i += 1 ){
    var user = DATA.users[i];
    chat.data.friends.put( user.friend_id, user );
}

getFriend = function(id){ return chat.data.friends.get( id ); }

var friend = getFriend(66);
console.log(friend.name);
console.log(friend.username);
console.log(friend.thumb);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文