Javascript 用数组的值替换DOM上的值

Javascript 用数组的值替换DOM上的值,javascript,html,arrays,Javascript,Html,Arrays,我有一个次优的解决方案,涉及遍历数组和替换中的文本,这取决于是否找到了这些值。目前,重构提取此数据的逻辑不是一个选项,因此,它是这样的: 我有一个部门对象数组,可在页面加载时读取: [{id: 1, name: "Arts & Sciences"}, {id: 2, name: "Mathematics"}, {id: 3, name: "History"}] 我还有一个建筑对象数组 [{id: 50, name: "Building 50"}, {id: 62, name: "Bui

我有一个次优的解决方案,涉及遍历数组和替换
中的文本,这取决于是否找到了这些值。目前,重构提取此数据的逻辑不是一个选项,因此,它是这样的:

我有一个部门对象数组,可在页面加载时读取:

[{id: 1, name: "Arts & Sciences"}, {id: 2, name: "Mathematics"}, {id: 3, name: "History"}]
我还有一个建筑对象数组

[{id: 50, name: "Building 50"}, {id: 62, name: "Building 62"}, {id: 21, name: "Building 21"}]
在我的DOM上,我有一个填充了部门ID及其相应的建筑ID的表

<tr>
    <td>1</td>  // Arts & Sciences
    <td>50</td> // Building 50
</tr>
<tr>
    <td>2</td>  // Mathematics
    <td>62</td> // Building 62
</tr>
<tr>
    <td>3</td>  // History
    <td>21</td> // Building 21
</tr>

1//艺术与科学
50//50号楼
2//数学
62//62号楼
3//历史
21//21号楼
我想知道是否有一种简单的方法来使用这两个可用的数组,我必须用这些数组的正确值替换表中的值

同样,我不能改变应用程序的流程来提取文本值,正如我所希望的那样


欢迎您的任何意见

如果你可以使用jQuery,试试这个(不知道如何翻译成纯js)


for(var i=0;i您可以使用for循环迭代数组,并访问table元素以覆盖它。此链接中给出了写入table单元格的内容:


结合这两种逻辑将是您的解决方案。

有一个表格,第一列是部门,第二列是建筑,我将这样做:

function arrToObj(arr, key) {
    var res = {};
    for (var i = 0, a; a = arr[i]; i++) {
        res[a[key]] = a;
    }
    return res;
}

var depsArr = [{id: 1, name: "Arts & Sciences"}, {id: 2, name: "Mathematics"}, {id: 3, name: "History"}];
var depsObj = arrToObj(depsArr, "id");

var buildsArr = [{id: 50, name: "Building 50"}, {id: 62, name: "Building 62"}, {id: 21, name: "Building 21"}];
var buildsObj = arrToObj(buildsArr, "id");

var tds = table.getElementsByTagName("td");
for (var i = 0, tdDep, tdBuild; (tdDep = tds[i]) && (tdBuild = tds[i+1]); i += 2) {
    tdDep.textContent = depsObj[tdDep.textContent].name;
    tdBuild.textContent = buildsObj[tdBuild.textContent].name;
}
我试图通过创建一个对象,然后循环表来最小化循环。这将有一个固定的表,其中有两列。

Javascript方法

使用
createElement
创建
tr
td
appendChild
td到
tr
,最后tr到

var ar1=[{id:1,名称:“艺术与科学”},{id:2,名称:“数学”},{id:3,名称:“历史”}]
var ar2=[{id:50,名称:“50号楼”},{id:62,名称:“62号楼”},{id:21,名称:“21号楼”}]
var table=document.getElementById('表')
table.innerHTML=”“/*清除现有表*/

对于(var i=0;iYou的问题/被接受答案的比率非常低。当人们努力帮助你时,你应该开始接受问题的答案。如果你不这样做,你将得到更少的帮助,因为人们会注意到你不感谢那些试图帮助你的人。谢谢Jorge,我会更加积极主动地回答你的问题,请这样做我不认为我不感激这么多人
   for (var i in array) {

      // get access to td cell
    // write into the cell 
    // access data  using array[i]

    }
function arrToObj(arr, key) {
    var res = {};
    for (var i = 0, a; a = arr[i]; i++) {
        res[a[key]] = a;
    }
    return res;
}

var depsArr = [{id: 1, name: "Arts & Sciences"}, {id: 2, name: "Mathematics"}, {id: 3, name: "History"}];
var depsObj = arrToObj(depsArr, "id");

var buildsArr = [{id: 50, name: "Building 50"}, {id: 62, name: "Building 62"}, {id: 21, name: "Building 21"}];
var buildsObj = arrToObj(buildsArr, "id");

var tds = table.getElementsByTagName("td");
for (var i = 0, tdDep, tdBuild; (tdDep = tds[i]) && (tdBuild = tds[i+1]); i += 2) {
    tdDep.textContent = depsObj[tdDep.textContent].name;
    tdBuild.textContent = buildsObj[tdBuild.textContent].name;
}