如何使用javascript将值转换为数组

如何使用javascript将值转换为数组,javascript,Javascript,如果函数是一个包含两个或多个值的数组,我可以验证它 const validateZIPLength = (zip) => ( zip.length > 5 || zip.length < 5 ? 'zip code should be 5 digits': undefined ) validateZIPLength('123') for the above function cal, it works fine validateZIPLength(['1234',

如果函数是一个包含两个或多个值的数组,我可以验证它

const validateZIPLength = (zip) => (
  zip.length > 5 || zip.length < 5 ?
    'zip code should be 5 digits': undefined
)
validateZIPLength('123')
for the above function cal, it works fine

validateZIPLength(['1234', '12345'])
const validateZIPLength=(zip)=>(
拉链长度>5 | |拉链长度<5?
“邮政编码应为5位”:未定义
)
validateZIPLength('123')
对于上述函数cal,它可以正常工作
validateZIPLength(['1234','12345']))
它应该返回邮政编码应为5且未定义,但它只返回数组中第一个项目的邮政编码应为5

validateZIPLength(['1234','12345'])

它应该返回邮政编码应该是5并且未定义,但是它是 对于数组中的第一项,仅返回邮政编码应为5

实际上,函数
validateZIPLength
返回整个数组本身的值,而不是第一个元素的值。当您传入数组时,它不知道它是得到字符串还是数组,它只是根据
zip.length>5 | | zip.length<5
检查长度,因为数组也有一个属性,代码按照您的指示工作-它得到
2
,因为数组中有两个元素,因此返回字符串
“邮政编码应为5位”

记住,计算机是愚蠢的——它们做你让它们做的事,而不一定是你想让它们做的事

由于您有一个接受字符串并给出结果的函数,但您希望将其应用于数组的许多元素,因此可以使用它来实现这一点。它接受一个函数并使用数组的每个成员调用它。然后得到一个包含每个结果的新数组

const validateZIPLength=(zip)=>(
拉链长度>5 | |拉链长度<5?
“邮政编码应为5位”:未定义
)
const singleInvalidZIPCode=validateZIPLength('123');
const singleValidZIPCode=validateZIPLength('12345');
log(“单一无效邮政编码:”,singleInvalidZIPCode);
log(“单一有效邮政编码:”,singleValidZIPCode);
常量multipleZIPCodes=['1234','12345'].map(validateZIPLength)

log(“多个邮政编码:”,多个邮政编码)您的函数只能处理单个值,不能处理数组

以下是如何添加对阵列的支持:

函数validateZIPLength(zip){
if(Array.isArray(zip)){
for(设i=0;ilog(validateZIPLength(['1234','12345'])
['1234','12345'].map(validateZIPLength)
问题是,如果是单地址,这种方法可以很好地工作validateZIPLength('123'))但是如何在函数本身中写入检查条件如果存在zip的数组如果无法控制zip将如何传递给函数validateZIPLength,则可以在函数内部进行检查,以查看传递的是否是数组。它看起来是这样的:
contvalidatezipLength=(zip)=>(if(Array.isArray(arguments[0]){arguments[0].map((z)=>{zip.length>5 | | zip.length<5?'zip代码应该是5位:未定义的})}否则{if只是zip}
感谢您的帮助该函数似乎工作正常,我期待此功能当我尝试使用此函数时,抛出一个lint错误,说明意外的否定条件感谢您的帮助,但此行仍然存在相同问题意外的否定条件,否则{return zip.length!==5?“邮政编码应为5位”:undefined;@viky:我对代码做了另一个更改。你能再试一次吗?我很确定它现在可以工作。-如果你仍然有问题,你能告诉我你在使用什么linter吗?嗨,john,当我使用上面的函数时,它返回undefined。有没有办法,如果没有错误,我可以返回一个空数组而不是unde罚款