仅当特定索引是有效数字时,如何用第二个数组覆盖一个数组?

问题描述 投票:0回答:3

我有2个数组:

var array1 = [1,4,8,10,12]
var array2 = [3,2,undefined,9,undefined]

因此,我需要一个结果数组,其中

array1
的所有值都已替换为
array2
的值,但前提是
array2
的特定索引不是
undefined
(有效数字) 。在这种情况下,
array1
的索引值应该保持不变。

结果应该是:

resultArray = [3, 2, 8, 9, 12]

我无法让它工作。

javascript arrays replace merge concatenation
3个回答
4
投票
 const resultArray = array2.map((el, i) => isNaN(el) ? array1[i] : el);

请注意,由于一些非常有趣的语言设计,这将取代

undefined
但不会取代
null


2
投票

您可以显式检查

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)


1
投票

使用函数的替代方法

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>

© www.soinside.com 2019 - 2024. All rights reserved.