我有以下数组
var arr = ['1234','23C','456','356778', '56']
我想删除少于3个字符且大于4个字符的数组元素。最终结果应如下
arr = ['1234', '23C', '456']; //only 3 and 4 digits in the array.
其次,我想做以下事情。如果' arr'有超过3个字符的元素,我需要通过删除最后一个数字来剪辑。最终的数据'数组应该是这样的。
arr = ['123', '23C', '456'];
答案 0 :(得分:1)
对于第一部分,您只需使用filter
过滤掉不包含3位数的数字。
var arr = [1234, 234, 456, 356778, 56];
var result = arr.filter(function(num) {
return num < 1000 && num >= 100;
});
console.log(result);
&#13;
对于第二部分,您可以使用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);
&#13;
答案 1 :(得分:0)
您想要的只是Array.filter
和Array.map
,并将字符串转换为数字
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
})
答案 2 :(得分:0)
要处理数字是3位还是4位数,请检查每个数字是否在100&lt; = num&lt; 10000
let result = arr.filter(function(val) {
// is a 3 or 4 digit number
return 100 >= val && num < 10000;
});
要将四位数字剪辑为3位数,我们可以将所有四位数字除以10并将它们转换为整数
let clippedResult = result.map(function(val) {
return val >= 1000 ? Math.floor(val / 10) : val
});
答案 3 :(得分:0)
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);
答案 4 :(得分:0)
此解决方案将输入数组转换为1234,23C,456,356778,56
形式的字符串,然后使用regexp查找所需元素。
var arr = ['1234','23C','456','356778', '56'];
console.log(String(arr).match(/\b\w{3}(?=\w?\b)/g));
&#13;
英文:
查找所有以字边界开头的子字符串(
\b
,它将在逗号之后或字符串的开头),然后有三个字母数字字符,并向前看({{1} })may((?=
)在下一个单词边界(逗号或字符串结尾)之前有一个附加字符。
是的,这个将使用字符串元素,只要这些字符串由字母数字组成(换句话说,就是那些不会破坏字数的事情({{1} })逻辑。
答案 5 :(得分:-1)
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
这对我有用。