从数组中剪掉最后一位数字
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.filter
和 Array.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
这对我有用。
我有以下数组
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.filter
和 Array.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
这对我有用。