怎么办我用javascript将值转换为数组

时间:2018-05-11 16:16:00

标签: 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', '12345'])

它应该返回邮政编码应该是5并且未定义但它只返回邮政编码应该是5为数组中的第1项

2 个答案:

答案 0 :(得分:1)

您的函数只能处理单个值,而不能处理数组。

以下是如何添加对数组的支持:

&#13;
&#13;
function validateZIPLength(zip) {
  if(Array.isArray(zip)) {
    for(let i = 0; i < zip.length; i++) {
      zip[i] = validateZIPLength(zip[i]);
    }
    return zip;
  } else {
    return zip.length === 5 ? undefined : "zip code should be 5 digits";
  }
}

console.log(validateZIPLength(['1234', '12345']));
&#13;
&#13;
&#13;

答案 1 :(得分:0)

  

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

     

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

实际上,会发生的是函数validateZIPLength返回整个数组本身所获得的内容,而不是第一个元素。传入数组时,它不知道它是否有字符串或数组,它只是根据zip.length > 5 || zip.length < 5检查长度,因为数组有一个{{3属性,代码按照你的指示工作 - 得到2,因为数组中有两个元素,因此返回字符串'zip code should be 5 digits'

请记住,计算机是愚蠢的 - 它们会按照告诉它们的方式执行,而不一定是您想要它们的目标。

由于你有一个函数可以获取字符串并为你提供结果,但是你想将它应用于数组的许多元素,你可以使用length来完成这一点。它需要一个函数并使用数组的每个成员调用它。然后,您将获得一个包含每个结果的新数组。

const validateZIPLength = (zip) => (
  zip.length > 5 || zip.length < 5 ?
    'zip code should be 5 digits': undefined
)
const singleInvalidZIPCode = validateZIPLength('123');
const singleValidZIPCode = validateZIPLength('12345');

console.log("single invalid ZIP code:", singleInvalidZIPCode);
console.log("single valid ZIP code:", singleValidZIPCode);

const multipleZIPCodes = ['1234', '12345'].map(validateZIPLength)

console.log("multiple ZIP codes:", multipleZIPCodes);