【问题标题】:How to convert list of list to JavaScript array如何将列表列表转换为 JavaScript 数组
【发布时间】:2019-05-31 09:04:47
【问题描述】:

我正在用 Python 从 Sql-server 数据库列表中检索银行账户

Alllist=select_from_db_service(sql,[1],organization)
   if len(Alllist)>0:
        for row in Alllist:      
           info_list.append((list(row)))

然后我将其渲染到 HTML 页面: 返回渲染(请求,'app/reporting.html',

{'info_list':info_list,'start_date':start_date,'end_date':end_date})

在 HTML 页面中,我有两个下拉列表输入 Company 和 Account_id

<input  type="text" list='List_of_Companies' data-search-in="Company" id="Input1" name="Companyname"  placeholder="Choose a Company"  value="{{ Company}}" >

<input  type="text" list='List_of_Accounts' data-search-in="Account" id="Input2" name="Accountname"  placeholder="Choose an Account ID" value="{{ Account_Id}}" hidden>
        <br>  <br> 

他们都使用 HTML Datalist 从 Python 返回 info_list 中的数据:

    <datalist id="List_of_Companies">
 <select id="filenamelist" size="5"  class="select">
     {% for Company in  info_list %}
     <option value="{{ Company.3 }}">{{  Company.3 }}</option>
     {% endfor %}
     </select>
 </datalist>




   <datalist id="List_of_Accounts">
 <select id="filenamelist" size="5"  class="select">
     {% for Company in  info_list %}
     <option value="{{ Company.0 }}" data-value="{{  Company.3 }}" > {{  Company.3 }}</option>
     {% endfor %}
     </select>
 </datalist>

现在等待我从公司输入中获得的值,我只想在我能够执行的帐户 ID 输入中显示相关输入,并显示一个 HTML DataTalbe,其中仅基于输入的 info_list 中的相关条目用户选择公司。

我尝试了以下方法,在 HTML 页面中的 Form 标签中:

<input  type="text" id="DataTableInput" value="{{ info_list}}" hidden />

在 JavaScript 中我尝试过:

var dataSet = document.getElementById("DataTableInput").value; 
console.log('DataSet' + dataSet)

输出看起来像:

DataSet[['39 XXX, 'EUR', 'CS', Company_name', 4, '01-jan-2019'], ['12 XXX',, 'USD, 'CS', 'Company_name2', 5, '01-jan-2019'],
['34 XXX', 'USD', 'CS', Company_name2', 5, '01-jan-2019'],…..]

现在我想遍历这个数组并只过滤输入中具有正确公司名称的那些,但我无法访问这些元素, 提前致谢, 尼尔

【问题讨论】:

    标签: javascript python html sql-server-2008


    【解决方案1】:

    为什么你不能访问元素?如果console.log(dataSet[2]) 给你公司名称,你应该可以做这样的事情:

    function filterByCompanyName(array, name) {
      //assuming index 3 is always the company name of course
      return array.filter(item => item[3] == name);
    }
    
    let givenArray = [['39 XXX', 'EUR', 'CS', 'Company_name', 4, '01-jan-2019'], ['12 XXX', 'USD', 'CS', 'Company_name2', 5, '01-jan-2019'],
    ['34 XXX', 'USD', 'CS', 'Company_name2', 5, '01-jan-2019']];
    
    console.log(filterByCompanyName(givenArray, 'Company_name2'));

    【讨论】:

    • 我的错,我已经编辑了我的问题,console.log('DataSet' + dataSet) 给了我:DataSet[['39 XXX, 'EUR', 'CS', Company_name', 4, '01-jan-2019'], ['12 XXX',, 'USD, 'CS', 'Company_name2', 5, '01-jan-2019'], ['34 XXX', 'USD', 'CS ', Company_name2', 5, '01-jan-2019'],…..] , Dataset[2] 给我:DataSet'
    • 是的,所以您只需要将上述函数与数据集一起使用吗?
    • 我收到 Uncaught TypeError: array.filter is not a function
    • 这意味着你给函数的第一个参数不是数组。你能再检查一下 dataSet 是一个数组吗?
    • 我上面写的 DataSet 是列表 python 对象返回到 HTML 页面的列表,当我使用 consol.log 以查看我得到的返回:['39 XXX',' EUR', 'CS', 'Company_name', 4, '01-jan-2019'], ['12 XXX', 'USD', 'CS', 'Company_name2', 5, '01-jan-2019'] , ['34 XXX', 'USD', 'CS', 'Company_name2', 5, '01-jan-2019']];我不确定它是一个 javascript 数组
    猜你喜欢
    • 2013-03-09
    • 2020-04-30
    • 2014-07-13
    • 2011-09-23
    • 2014-01-29
    • 1970-01-01
    • 2018-01-06
    • 2020-01-24
    • 2019-09-21
    相关资源
    最近更新 更多