【问题标题】:How to double a value if its a string within an array如果它是数组中的字符串,如何将值加倍
【发布时间】:2019-09-10 06:23:59
【问题描述】:

如果 ID 是偶数并且每个 ID 都是奇数,我会尝试找到一半的值。

这是我为数字(ID)做的一个例子

var numbers = [8, 12, 5, 2, 5, 7];
var collectionNumbers = {
  orginialNumbers: numbers,
  doubledNumbers: numbers.map(function(n) { return n * 2; })
};

console.log(collectionNumbers);

Simple 通常可以完成乘法运算,但我的数组如下所示:

我正在尝试弄清楚如何将最后 3 个 ID 的一半或两倍

data = [
  { ID: 1 },
  { ID: 2 },
  { ID: 33 },
  { ID: 66 },
  { ID: 'abc' },
  { ID: 'xyz' },
  { ID: 'A1' }
]

我试图弄清楚如何将最后 3 个 ID 减半或加倍

因为我拥有它的方式,所以数组中的字符串未定义。这很好,我最关心的是我必须将字符串转换为数值的一半或两倍。如果是这样,我将如何使用字符串来做到这一点?

【问题讨论】:

  • 请添加您想要的结果。
  • 什么是字符串的一半或两倍,或者不是数字的任何东西?同样的问题,奇数或偶数,当涉及到任何不是数字的东西时,这是荒谬的。
  • 对于字符串值,老实说,如果长度是偶数或奇数,我不确定该值的两倍或一半
  • 那我们真的帮不了你哈哈。我们都可以想出一种不同的方法来将字符串减半或加倍。也许分享您当时想要实现的目标(为什么要将字符串减半和加倍?)然后有人可以提供帮助。
  • 试试.map((value) => isNaN(value) ? value : value % 2 === 0 ? value /2 : value * 2)

标签: javascript arrays


【解决方案1】:

推测如果它是一个字符串,那么如果长度为奇数,则将字符串连接到自身,否则得到字符串的前半部分,您可以使用以下内容。

如果这是家庭作业(我怀疑),那么真正的教训是获得清晰明确的要求。

var data = [
{ID:1},
{ID:2},
{ID:33},
{ID:66},
{ID:"abc"},
{ID:"xyz"},
{ID:"A1"}
]

var modded = data.map(function(o){
  //Set a variable to return
  var retval = o.ID
  //If it's a number
  if(typeof o.ID === "number") {
    //Halve it if even, otherwise double it
    retval = o.ID % 2 === 0 ? o.ID / 2 : o.ID * 2;
  //otherwise
  }else{    
    //if the string length is even, get the first half of the string, otherwise add the string to itself
    retval = o.ID.length % 2 === 0 ? o.ID.substring(0, o.ID.length /2) : o.ID + o.ID
  }  
  
  return retval;
});

console.log(modded);

【讨论】:

  • 是的,这就是我要找的。下次我肯定会询问更多细节。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-15
  • 1970-01-01
  • 1970-01-01
  • 2023-03-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多