我很难理解数组。我有两个,我想选择一个并用其他数组元素填充null元素。我目前有以下内容:
var arr1 = [1,2,3,4]
var arr2 = [null, 99, null, null]
arr2.map((item) => {
if (item == null) {
arr2 = arr1.splice(item, 1)
}
})
console.log(arr2)
// is outputing [3]. Expected is 1, 99, 3, 4
我正在使用splice
,因为我认为这是我用来实现目标的最接近的方法。此外,使用.map
但不是必需的。
我很乐意访问任何相关/已经回答的问题,但由于英语不是我的主要语言,我找不到任何相关问题。
答案 0 :(得分:1)
您的代码将在splice(null, 1)
上致电arr1
,并将结果分配到整个arr2
三次。
map
旨在让您浏览数组中的每个项目并为每个项目提供替代,但您需要正确使用它,如下所示:
var arr1 = [1,2,3,4]
var arr2 = [null, 99, null, null]
arr2 = arr2.map((item, i) => item === null ? arr1[i] : item )
console.log(arr2)
答案 1 :(得分:1)
只需避免拼接,并使用三元运算符获取所需的值:
var arr1 = [1,2,3,4]
var arr2 = [null, 99, null, null]
arr2 = arr2.map( (item, i) => item === null ? arr1[i] : item );
console.log(arr2)

答案 2 :(得分:0)
你是在正确的轨道上,但map
中的回调应该返回要在新数组中使用的元素。试试这个。
arr2 = arr2.map((value, index) =>
value != null ? value : arr1[index]
});
答案 3 :(得分:0)
如果您知道arr1
和arr2
具有相同的尺寸
for(var i=0;i<arr2.length;i++){
arr2[i]= arr2[i] || arr1[i];
}
我正在使用for
循环,因为如果您刚刚开始使用数组以完全理解它们的工作方式,那么它是理想的。
||
运算符(也称为null-coalescing运算符)将第一个truthy操作数返回给赋值。