【发布时间】:2014-10-09 23:55:54
【问题描述】:
以下函数循环遍历一个列表。如果子列表中的特定项目具有空白值,则将其替换为“无”。
lst.forEach(function (d) {
if(d.thefirstcolumn){} else {d.thefirstcolumn = "None"};
if(d.somethingelse){} else {d.somethingelse = "None"};
if(d.random){} else {d.random = "None"};
if(d.cold){} else {d.cold = "None"};
if(d.cole){} else {d.cole = "None"};
if(d.colf){} else {d.colf = "None"};
if(d.colg){} else {d.colg = "None"};
if(d.colh){} else {d.colh = "None"};
});
这不是很可扩展,因为我必须引用每个子列表中的每个项目,所以我要创建一个函数来为所有项目执行此操作,这样我就不必引用了。
例如,它会像下面这样简短,它将完成与前面的代码相同的结果,并对列表的每个子列表中的每个项目执行此操作。
lst.forEach(function (d) {
if(d.col){} else {d.col = "None"};
});
上面,我的意思是 d.col 指代 d.cola、d.colb、d.colc、d.cold 和所有其他项目。我将如何进行这项工作?
额外的问题是,如果子列表中的项目是数字,我将如何应用以下函数,否则只应用前一个函数?
例如,它会在子列表的每个项目上尝试这个
d.col = parseInt(d.col, 10);
否则,如果项目不是数字,它将运行以下内容
if(d.colh){} else {d.colh = "None"}
【问题讨论】:
-
当列名在
col中时使用d[col]。 -
好的,所以我需要更改我的示例,因为列名可能会有很大差异。
-
所以?但是它可能会有所不同,您应该能够将它们全部放入
col变量中。您可以创建一个包含所有可能值的数组,然后对其进行迭代。 -
var cols = ["cola", "colb", ...];然后在你的forEach函数中,你做cols.foreach(function(col) ...然后使用d[col]。 -
对于 parseInt,它是
d[col] = parseInt(d[col], 10)。
标签: javascript list for-loop