从数组中剪掉最后一位数字

Clip off last digits from arrays

我有以下数组

var arr = ['1234','23C','456','356778', '56']

我想删除少于 3 个字符和多于 4 个字符的数组元素。最终结果应该如下

arr = ['1234', '23C', '456'];  //only 3 and 4 digits in the array. 

其次,我想做以下事情。如果 'arr' 的元素超过 3 个字符,我需要通过删除最后一位数字来剪辑。最终的 'data' 数组应该如下所示。

arr = ['123', '23C', '456'];

你想要的只是 Array.filterArray.map,并将 String 转换为 Number

var arr = [1234,234,456,356778, 56]

var newArr = arr.filter((num) => {
  // convert number to string
  var str = '' + num
  // if length is 3 or 4 - return true (element will be in newArr)
  return str.length === 3 && str.length === 4 
})

和第二种情况

var newArr = arr.map((num) => {
  var str = '' + num
  // is str is longer than 3, cut it to length of 3
  if(str.length > 3)
    str = str.substring(0, 3)
  // return str converted to number
  return +str
})

对于第一部分,您可以使用 filter 来过滤掉不是由 3 位数字组成的数字。

var arr = [1234, 234, 456, 356778, 56];
var result = arr.filter(function(num) {
  return num < 1000 && num >= 100;
});

console.log(result);

对于第二部分,您可以使用map。只需将数字转换为字符串即可。如果长度大于3,取字符串前3个元素组成的子串,再转回数字。

var data = [1234, 123, 4567, 3333];
var result = data.map(function(num) {
  num = num.toString().substring(0, 3);
  return parseInt(num);
});

console.log(result);

要处理一个数字是 3 位还是 4 位数字,请检查每个数字是否在 100 <= num < 10000 范围内

  let result = arr.filter(function(val) {
    // is a 3 or 4 digit number
    return 100 >= val && num < 10000;
  });

要将四位数字截成三位数字,我们可以将所有四位数字除以 10 并将它们转换为整数

  let clippedResult = result.map(function(val) {
    return val >= 1000 ? Math.floor(val / 10) : val
  });
function filterArray(arr,lowDigits,highDigits){
    var newArr=[];
    for(i=0;i<arr.length;i++){
         val=arr[i];
         length=val.length;
         if(length>=lowDigits&&length<=highDigits){
          if(length>lowDigits){
          val=val.substring(0,lowDigits);
          }
          newArr.push(val);
         }
     }
     return newArr;
}

var arr = ['1234','234','456','356778','56'];
arr=filterArray(arr,3,4);
console.log(arr);

此解决方案将输入数组转换为 1234,23C,456,356778,56 形式的字符串,然后使用正则表达式查找所需的元素。

var arr = ['1234','23C','456','356778', '56'];

console.log(String(arr).match(/\b\w{3}(?=\w?\b)/g));

英文:

Find all the substrings which start with a word boundary (\b, which will be after a comma, or the beginning of the string), then have three alphanumeric characters, and which looking ahead ((?=) may (?) have one additional character before the next word boundary (comma or end of string).

是的,这个 与字符串元素一起使用,只要字符串由字母数字组成(换句话说,不会打断单词 break (\b) 逻辑。

 let isValidElement = updated_ImportDetails.ImportData.filter(function (num) {
                    // is a 3 or 4 digit number
                    return num.length > 2 && num.length <4 ;
                });




                var result = isValidElement.map(function (num) {
                    num = num.substring(0, 3);
                    return num;
                });

                result = result.filter(function (elem, index, self) {
                    return index == self.indexOf(elem);
                })    //removes duplicates from the array

这对我有用。