仅当特定索引是有效数字时,如何用第二个数组覆盖数组?
How to overwrite a array with a second array, only if the specific index is a valid number?
我有 2 个数组:
var array1 = [1,4,8,10,12]
var array2 = [3,2,undefined,9,undefined]
所以,我需要一个结果数组,其中 array1
的所有值都已被 array2
的值替换,但前提是 array2
的特定索引是a 不是 undefined
(有效数字)。在这种情况下,array1
的索引值应该保持不变。
结果应该是:
resultArray = [3, 2, 8, 9, 12]
我无法让它工作。
const resultArray = array2.map((el, i) => isNaN(el) ? array1[i] : el);
请注意,由于一些非常有趣的语言设计,这将取代 undefined
但不会取代 null
。
您可以检查 undefined
的显式并使用 array1
的值进行映射。
var array1 = [1, 4, 8, 10, 12],
array2 = [3, 2, undefined, 9, undefined],
result = array2.map((v, i) => v === undefined ? array1[i] : v);
console.log(result)
使用函数 Array.from
的替代方案
var array1 = [1, 4, 8, 10, 12],
array2 = [3, 2, undefined, 9, undefined],
result = Array.from(array2, (n, i) => isNaN(n) ? array1[i] : n);
console.log(result);
<script src="https://codepen.io/egomezr/pen/dmLLwP.js"></script>
我有 2 个数组:
var array1 = [1,4,8,10,12]
var array2 = [3,2,undefined,9,undefined]
所以,我需要一个结果数组,其中 array1
的所有值都已被 array2
的值替换,但前提是 array2
的特定索引是a 不是 undefined
(有效数字)。在这种情况下,array1
的索引值应该保持不变。
结果应该是:
resultArray = [3, 2, 8, 9, 12]
我无法让它工作。
const resultArray = array2.map((el, i) => isNaN(el) ? array1[i] : el);
请注意,由于一些非常有趣的语言设计,这将取代 undefined
但不会取代 null
。
您可以检查 undefined
的显式并使用 array1
的值进行映射。
var array1 = [1, 4, 8, 10, 12],
array2 = [3, 2, undefined, 9, undefined],
result = array2.map((v, i) => v === undefined ? array1[i] : v);
console.log(result)
使用函数 Array.from
var array1 = [1, 4, 8, 10, 12],
array2 = [3, 2, undefined, 9, undefined],
result = Array.from(array2, (n, i) => isNaN(n) ? array1[i] : n);
console.log(result);
<script src="https://codepen.io/egomezr/pen/dmLLwP.js"></script>