如果不为空,将对象的所有值从整数替换为字符串

时间:2019-02-27 04:54:10

标签: javascript node.js

我是nodejs的新手,目前正尝试用lambda编写函数,我有一个来自SQL数据库的查询,该查询为我提供了来自具有不同模式的字段中的对象。 如果所有这些值都不为null,则需要所有这些值作为字符串返回。

这有效,但是重复太多了。您是否知道更好的方法,在Object.values ..或function等上使用foreach。我只是做得不好。

 a var Result = [];
 var item =  results.map(dataField) => {
     dataField.es_id  == null ? "" : dataField.es_id = dataField.es_id.toString();
     dataField.status  == null ? "" : dataField.status = dataField.status.toString();
     dataField.er_Act  == null ? "" : dataField.er_Act = dataField.er_Act.toString();

     Result.push(dataField);


});
callback(null, Result );

2 个答案:

答案 0 :(得分:1)

您需要分配dataField的属性,以便将空字符串正确放置在对象上,否则将""输入

dataField.es_id  == null ? "" :

只是一个未使用的表达式。

要减少代码重复,请遍历一系列属性:

const Result = [];
results.forEach((dataField) => {
  ['es_id', 'status', 'er_Act'].forEach((prop) => {
    dataField[prop] = dataField[prop] === null
    ? ''
    : dataField[prop].toString();
  });
  Result.push(dataField);
});

或者,如果需要替换对象上的每个属性值,则无需对属性名称进行硬编码,并且可以通过遍历输入的Object.entries来从功能上生成结果:< / p>

const Result = results.map((dataField) => (
  Object.entries(dataField).reduce((a, [key, val]) => {
    a[key] = val === null
    ? ''
    : val.toString();
    return a;
  }, {})
));

答案 1 :(得分:1)

遍历所有属性

import random
class PC(object): 
  def __init__(self, health, damage):
    self.health = health 
    self.damage = random.randint(1,damage)

Player_character = PC(10,5) 
Spider = PC(2,3)
print(Player_character.health)

def fightspider(spiderturn):
  rounds = 0
  while spiderturn == 1 and rounds < 2:
    Spider.damage
    Player_character.health = Player_character.health - Spider.damage
    rounds += 1
    print(Spider.damage)
print(Player_character.health)

def fightplayer(playerturn):
  if playerturn == 1:
    Spider.damage
fightspider(1)