代码之家  ›  专栏  ›  技术社区  ›  resopollution

Javascript访问名称/值对

  •  2
  • resopollution  · 技术社区  · 15 年前

    我得到的JSON名称/值对如下所示:

    {
       "Name":"parentid",
       "Value":"blah"
    },
    {
       "Name":"siteid",
       "Value":"blah"
    },
    {
       "Name":"sitename",
       "Value":"blah"
    }
    

    {'parentid', 'blah'},
    {'sitename', 'blah'}
    
    5 回复  |  直到 10 年前
        1
  •  5
  •   albertein    15 年前

    试试这个:

    var items = [
        {
           "Name":"parentid",
           "Value":"blah"
        },
        {
           "Name":"siteid",
           "Value":"blah"
        },
        {
           "Name":"sitename",
           "Value":"blah"
        }
    ];
    
    var results = new Object();
    
    for (var i = 0; i < items.length; i++)
    {
        results[items[i].Name] = items[i].Value;
    }
    

    这将导致如下结果:

    var results = { parentid: "Blah", siteid: "Blah", sitename: "Blah" };
    
        2
  •  2
  •   Peter Bailey    15 年前

    一种方法。

    var json = [
      {
        "Name":"parentid",
        "Value":"blah"
      },
      {
        "Name":"siteid",
        "Value":"blah"
      },
      {
        "Name":"sitename",
        "Value":"blah"
      }
    ];
    
    for ( var i = 0, l = json.length, obj; i < l; i++ )
    {
      obj = json[i];
      json[i] = new Object();
      json[i][obj.Name] = obj.Value;
    } 
    
    // console.log() requires Firebug
    console.log( json );
    
        3
  •  1
  •   Breton    15 年前
    function objectflatten (array) {
      var out = {}, i;
      for(i = 0; i < array.length; i++) {
         out[array[i].name] = array[i].value;
      }
      return out;
    }
    

    这是一个函数,它将以您提供的形式获取对象,并将其作为“普通”对象输出,名称值作为键,值作为值。

        4
  •  1
  •   Dan Beam    15 年前

    我建议使用 for( ... in ... ) 方法来执行此任务。它会抓取你需要的关键名称。

    var jsonObj = eval( '([{ "Name":"parentid", "Value":"blah" }])' );
    
    for( var i = 0, assoc = {}, key; i < jsonObj.length; ++i )
    {
        for( key in jsonObj[ i ] ) // <-- this right here
        {
            assoc[ key ] = jsonObj[ i ][ key ];
        }
    }
    

    你最终会得到(来自Firebug)

    Object Name=parentid Value=blah

    可以通过object.key或object['key'](在本例中为assoc.Name或assoc['Value'])访问的

    http://yuiblog.com/blog/2006/09/26/for-in-intrigue/

        5
  •  -1
  •   Steven    15 年前

    我假设您使用的是PHP,PHP与您的关联如下:

    echo json_encode($result); 
    

    在javascript中,可以执行以下操作:

    // Soemthing retrieves php result and puts it in `var result`.
    data = eval("(" + result+ ")");
    alert(data.parentid);
    

    推荐文章