Javascript删除数组中的连接项

时间:2019-03-06 16:58:31

标签: javascript arrays

我有一些js数组。例如:

var array1 ="Apple","Orange","Lemon";
var array2 ="Shop1","Shop2","Shop3";
var array3 ="1","NA","4";
var finalArray=[];
finalArray.push(array1,array2,array3);

每个数组中的项目都链接在一起,因为我正在使用它们来生成图表。但是,如何从finalArray中删除链接的项目,以便如果array3包含'NA',则将从finalArray中删除每个链接的项目。因此,finalArray将包含:

array1 ="Apple","Orange";
array2 ="Shop1","Shop3";
array3 ="1","4";

任何帮助或正确方向的指导都将受到赞赏。

2 个答案:

答案 0 :(得分:1)

您可以使用reduce

这里的想法是

  • 遍历array3并检查特定元素的值是否为NA
  • 如果不是NA,则将值推入相应的键。
  • 如果它是NA,只需简单地返回op即可。

var array1 =["Apple","Orange","Lemon"];
var array2 =["Shop1","Shop2","Shop3"];
var array3 =["1","NA","4"];

var finalArray = array3.reduce((op,inp,index) => {
  if( inp != 'NA') {
    op.array1.push(array1[index])
    op.array2.push(array2[index])
    op.array3.push(inp)
  }
  return op
},{array1:[], array2:[], array3:[]})

console.log(finalArray)

答案 1 :(得分:0)

您可以从末尾开始遍历标志,并拼接finalArray的所有数组。

var array1 = ["Apple", "Orange", "Lemon"],
    array2 = ["Shop1", "Shop2", "Shop3"],
    array3 = ["1", "NA", "4"],
    finalArray = [array1, array2, array3],
    i = array3.length;

while (i--) {
    if (array3[i] !== 'NA') continue;
    finalArray.forEach(a => a.splice(i, 1));
}

console.log(finalArray);   
.as-console-wrapper { max-height: 100% !important; top: 0; }