使用其他Array元素填充每个null元素

时间:2016-10-31 23:00:16

标签: javascript arrays

我很难理解数组。我有两个,我想选择一个并用其他数组元素填充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但不是必需的。

我很乐意访问任何相关/已经回答的问题,但由于英语不是我的主要语言,我找不到任何相关问题。

4 个答案:

答案 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)

如果您知道arr1arr2具有相同的尺寸

for(var i=0;i<arr2.length;i++){
  arr2[i]= arr2[i] || arr1[i];
}

我正在使用for循环,因为如果您刚刚开始使用数组以完全理解它们的工作方式,那么它是理想的。 ||运算符(也称为null-coalescing运算符)将第一个truthy操作数返回给赋值。