如何将函数应用于Javascript中列表的子列表中的每个项目?

时间:2014-08-16 12:23:36

标签: javascript list for-loop

以下函数循环遍历列表。如果子列表中的特定项目具有空白值,则将其替换为"无。"

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"}

1 个答案:

答案 0 :(得分:2)

做一些像贝洛一样的事情

var keys = ['firstCol','secondCol','cola'];

lst.forEach(function (d) {
    keys.forEach(function(key){
         d[key]=d[key]||"None";
    })
});

因此,它将获得每个对象&如果key不存在则检查对象为该键指定none。