[英]how to remove undefined values from array with javascript
i have tried with filter method but it removes all values.我尝试过使用过滤器方法,但它会删除所有值。 i'm getting this undefined value because of this function.由于这个 function,我得到了这个未定义的值。 I want to merge these three arrays and remove only undefined.我想合并这三个 arrays 并只删除未定义的。
Example Arrays values:示例 Arrays 值:
let arry1= ["txt", "txt2"];
let arry2= ["txt"];
let arry3= ["txt", "txt5", "txt6"]
let c = arry1.map(function(value, index) {
return `${value} ${arry2[index]} ${arry3[index]}` ;
});
c = ['txt txt txt', 'txt2 undefined undefined']
i have this我有这个
let a = ["undefined this", "that undefined ", "undefined value undefined"]
// i want this
let a = ["this", "that", "value"]
```
you can write it like this你可以这样写
let a=arry1.map(function(value, index) {
value=`${value} ${arry2[index]||""}`.trim();
return `${value} ${arry3[index]||""}`.trim() ;
});
The other answers don't discriminate between the lack of a value ( undefined
) at an array element vs having the literal string "undefined"
at an array element.其他答案不区分数组元素中缺少值( undefined
)与数组元素中文字字符串"undefined"
。
I've explained how to accommodate for that using comments in the code below:我已经解释了如何使用下面代码中的注释来适应这种情况:
const array1 = ["txt", "txt2"]; const array2 = ["txt"]; const array3 = ["txt", "txt5", "txt6"]; // Collect the arrays into another array so that we can iterate over them: const arrays = [array1, array2, array3]; // Create an array of the lengths of the arrays: const arrayLengths = arrays.map(({length}) => length); // Get the maximum value from the lengths: const maxLength = Math.max(...arrayLengths); const result = []; // One outer loop for each index of the longest array: for (let i = 0; i < maxLength; i += 1) { // A placeholder string: let str = ''; // One inner loop for each of the arrays: for (const array of arrays) { // The value at the current index of the current array: const strOrUndefined = array[i]; // If it's actually a string, then append a space and the string // to the placeholder string: if (typeof strOrUndefined === 'string') str += ` ${strOrUndefined}`; } // Push the placeholder string into the result array, // but first remove the extra space created by the first iteration: result.push(str.trimStart()); } console.log(result); // ["txt txt txt", "txt2 txt5", "txt6"]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.