如何在javascript中将负数或正数设置为数组中的字符串
场景是,我有两个数组,如下所示。我希望通过将负元素转换为“”,并从所有元素中删除小数点,来转换数组中的值。对于第二个相同但为正数的阵列,请参见此示例:如何在javascript中将负数或正数设置为数组中的字符串,javascript,Javascript,场景是,我有两个数组,如下所示。我希望通过将负元素转换为“”,并从所有元素中删除小数点,来转换数组中的值。对于第二个相同但为正数的阵列,请参见此示例: Case1: var arr=["1.00","-2.05","-3P","-$8M","5P","6$","-5.0%"] /*logic to make arr[] as below: */ var arr2=["1","","","","5P","6$",""] console.log(arr2) Cas
Case1: var arr=["1.00","-2.05","-3P","-$8M","5P","6$","-5.0%"]
/*logic to make arr[] as below: */
var arr2=["1","","","","5P","6$",""]
console.log(arr2)
Case2: var arr=["1.00","-2.05","-3P","-$8M","5P","6$","-5.0%"]
/*logic to make arr[] as below: */
var arr2=["","-2","-3P","-$8M","","","-5%"]
console.log(arr2)
Note: I want to take string with decimal as string without decimal as well.
像这样的事情应该可以
//案例1
var arr11=[“1”、“-2”、“-3P”、“-800万美元”、“5P”、“6$”、“-5%”]
var arr12=arr11.map(e=>/^-/.test(e)?“”:e);
控制台日志(arr12);
//案例2
var arr21=[“1”、“-2”、“-3P”、“-800万美元”、“5P”、“6$”、“-5%”]
var arr22=arr21.map(e=>/^-/.test(e)?e:'';
控制台日志(arr22)代码>一个简单的映射和indexOf检查就可以做到这一点
var-arr=[“1”、“-2”、“-3P”、“-800万美元”、“5P”、“6$”、“-5%”;
var arr2=arr.map(e=>e.indexOf(“-”>-1?”):e);
//案例2
var arr3=[“1”、“2”、“3P”、“800万美元”、“5P”、“6美元”、“5%”];
var arr4=arr.map(e=>e.indexOf(“-”>-1?e:”);
控制台日志(arr2、arr4)代码>您可以测试字符串的第一个字符并返回项目或空字符串
函数GetPositiveValue(数组){
返回array.map(a=>a.toString()[0]!='-'?a:'';
}
函数GetNegativeValue(数组){
返回array.map(a=>a.toString()[0]='-'?a:'';
}
变量数组=[“1”、“-2”、“-3P”、“-800万美元”、“5P”、“6$”、“-5%”]
log(getPositiveValues(数组));
log(getNegativeValue(数组))代码>
.as console wrapper{max height:100%!important;top:0;}
以@baao为例,我想说,通过这个小小的修改,您可以实现您的目标:
var-arr=[“1”、“-2”、“-3P”、“-800万美元”、“5P”、“6$”、“-5%”;
var arr2=arr.map(value=>value.indexOf(“-”==0?”):convertStr(value));
//案例2
var arr3=[“1”、“2”、“3P”、“800万美元”、“5P”、“6美元”、“5%”];
var arr4=arr.map(value=>value.indexOf(“-”)==0?convertStr(value):”);
控制台日志(arr2、arr4);
函数convertStr(str){
变量值=str.split(“,”)
返回值[0]
}
解释
您可以使用该方法替换不需要的小数。然后,您可以使用该方法首先检测字符串是否包含破折号。使用该方法可以通过使用一些函数简化代码中的语句
源代码
在线测试
.问题是?回答得很好,如果您允许,我将引用您的方法和我的方法来获得解决方案。这是一个加号
"use strict";
const removeDecimals = string => string.replace(/\.\d*/, "");
const positiveOnly = string => string.charAt(0) === "-" ? "" : string;
const negativeOnly = string => string.charAt(0) === "-" ? string : "";
const arr = ["1.00", "-2.05", "-3P", "-$8M", "5P", "6$", "-5.0%"];
const arrPositives = arr.map(positiveOnly).map(removeDecimals);
const arrNegatives = arr.map(negativeOnly).map(removeDecimals);
// arrPositives ["1", "", "", "", "5P", "6$", ""]
// arrNegatives ["", "-2", "-3P", "-$8M", "", "", "-5%"]