Javascript 如何将JSON转换为可用于绑定下拉列表中的值的数组?

Javascript 如何将JSON转换为可用于绑定下拉列表中的值的数组?,javascript,html,json,google-api,Javascript,Html,Json,Google Api,我有一个可以生成JSON的应用程序,然后我将其作为GoogleCharts API的输入来绘制不同的可视化效果。此web应用程序的页面采用HTML格式。 假设我有一个JSON,它有一个医院的科室列表,比如:[{“v”:“普通医学”},{“v”:“实验室”}] 如何使用Javascript将其转换为一个数组,该数组又可以用作下拉列表的选项值 我使用以下代码生成JSON: <?php $serverName = "forestroot"; //serverName\instanceName

我有一个可以生成JSON的应用程序,然后我将其作为GoogleCharts API的输入来绘制不同的可视化效果。此web应用程序的页面采用HTML格式。 假设我有一个JSON,它有一个医院的科室列表,比如:
[{“v”:“普通医学”},{“v”:“实验室”}]

如何使用Javascript将其转换为一个数组,该数组又可以用作下拉列表的选项值

我使用以下代码生成JSON:

<?php
 $serverName = "forestroot"; //serverName\instanceName
 $connectionInfo = array( "Database"=>"****", "UID"=>"****",         "PWD"=>"****");
 $conn = sqlsrv_connect( $serverName, $connectionInfo);

 if( $conn ) {
 //echo "Connection established.<br />";
 }else{
  echo "Connection could not be established.<br />";
  die( print_r( sqlsrv_errors(), true));
 }

 $sql = "SELECT distinct([DEPT_NAME]) as dept FROM [Pristine11Dec15].[dbo].        [PACKAGE_REVN]";

 $params = array();
 $options =  array( "Scrollable" => SQLSRV_CURSOR_KEYSET );

  $result = sqlsrv_query( $conn, $sql, $params, $options);


  if (sqlsrv_num_rows( $result ) > 0) {
  while($row = sqlsrv_fetch_array($result, SQLSRV_FETCH_ASSOC)) {
    $array[] =  array('v'=>$row["dept"]);

      }
  }
  echo json_encode($array);
  sqlsrv_close( $conn);
  ?>

输出是
[{“v”:“普通医学”},{“v”:“实验室”}]

当我在代码中使用JSON.parse时,我会在下拉列表中将选项设置为[object object]。我哪里做错了

var json = '[{"v":"General Medicine"},{"v":"Laboratory"}]';
分析数据并使用返回
v
值的数组:

var list = JSON.parse(json).map(function (el) {
  return el.v;
}); // [ "General Medicine", "Laboratory" ]

但是,您可以扩展它来为
select
构建HTML:

var templ = '<option value="#{el}">#{el}</option>';

var options = JSON.parse(json).map(function (el) {
  return templ.replace('#{el}', el.v, 'g');
}).join('');

var select = '<select>' + options + '</select>';
document.getElementById('menu').insertAdjacentHTML('beforeend', select);
var templ='#{el}';
var options=JSON.parse(JSON.map)(函数(el){
返回temp.replace('{el}',el.v',g');
}).加入(“”);
变量选择=“”+选项+“”;
document.getElementById('menu').insertAdjacentHTML('beforeend',select);

分析数据并使用返回
v
值的数组:

var list = JSON.parse(json).map(function (el) {
  return el.v;
}); // [ "General Medicine", "Laboratory" ]

但是,您可以扩展它来为
select
构建HTML:

var templ = '<option value="#{el}">#{el}</option>';

var options = JSON.parse(json).map(function (el) {
  return templ.replace('#{el}', el.v, 'g');
}).join('');

var select = '<select>' + options + '</select>';
document.getElementById('menu').insertAdjacentHTML('beforeend', select);
var templ='#{el}';
var options=JSON.parse(JSON.map)(函数(el){
返回temp.replace('{el}',el.v',g');
}).加入(“”);
变量选择=“”+选项+“”;
document.getElementById('menu').insertAdjacentHTML('beforeend',select);

var arr=JSON.parse(这里是您的JSON字符串)可能重复的请提供您尝试的代码和预期输出。另外,我认为您可以使用当前的对象数组来生成select选项值
var deptArray=JSON.parse(string.map)(obj=>obj.v)
,可以通过添加以下内容来扩展该数组以返回选项元素的文档片段:
.reduce((frag,v)=>{frag.appendChild(new option(v,v));return frag},document.createDocumentFragment())
var arr=JSON.parse(这里是您的字符串)可能重复的请提供您尝试的代码和预期输出。另外,我认为您可以使用当前的对象数组来生成select选项值
var deptArray=JSON.parse(string.map)(obj=>obj.v)
,可以通过添加以下内容来扩展该数组以返回选项元素的文档片段:
.reduce((frag,v)=>{frag.appendChild(new option(v,v));return frag},document.createDocumentFragment())
。我认为使用DOM方法和元素而不是标记更干净,但每个方法和元素都有自己的…我认为使用DOM方法和元素而不是标记更干净,但每个方法和元素都有自己的…