使用map() for 循环

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

我如何用

namaPenumpang

中的值填充席位数组中未定义的值

我的代码

我尝试过使用

for
循环它有效

var kursi = [undefined, "galih"];

function tambahPenumpang(namaPenumpang, kursi) {
  // jika angkot masih kosong
  if (kursi.length == 0) {
    kursi.push(namaPenumpang);
    return kursi;
  } else {
    for (let i = 0; i < kursi.length; i++) {
      if (kursi[i] === undefined) {
        kursi[i] = namaPenumpang;
        return kursi;
      } else if (namaPenumpang === kursi[i]) {
        console.log("Kursi ini sudah terisi oleh " + kursi[i]);
        return kursi;
      } else if (kursi[i] !== undefined) {
        kursi.push(namaPenumpang);
        return kursi;
      }
    }
  }
}

我的代码如何使用

map()
工作?

请帮我解决这个问题,如何使用值 namaPenumpang 替换索引处值为 unndefined 的数组内容

javascript arrays foreach array-map
2个回答
0
投票

map
始终返回相同大小的数组。所以您无法添加新项目。

您的代码逻辑可能没有达到您的预期。

以下是一些修改:

let arr = ["x", undefined, "z"];

function tambahPenumpang(namaPenumpang, kursi) {
  // it is confusing to modify the original array and return it
  // so we create a new array and leave the original array untouched
  const newArr = [...kursi];
  if (newArr.includes(namaPenumpang)) {
    console.log("Kursi ini sudah terisi oleh " + namaPenumpang);
    return newArr;
  }
  for (let i = 0; i < newArr.length; i++) {
    if (newArr[i] === undefined) {
      newArr[i] = namaPenumpang;
      return newArr;
    }
  }
  // if we reach here, then it was not added
  newArr.push(namaPenumpang);
  return newArr;
}

arr = tambahPenumpang("x", arr); // Kursi ini sudah terisi oleh x
console.log(arr);                // ["x", undefined, "z"]
arr = tambahPenumpang("y", arr);
console.log(arr);                // ["x", "y", "z"]
arr = tambahPenumpang("a", arr);
console.log(arr);                // ["x", "y", "z", "a"]


0
投票

您可以获得与地图功能相同的功能。

var kursi = [undefined, "galih"];
function tambahPenumpang(namaPenumpang, kursi) {
  kursi = kursi.map((penumpang) => {
    if (penumpang === undefined) {
      return namaPenumpang;
    } else {
      return penumpang;
    }
  });
  return kursi;
}
© www.soinside.com 2019 - 2024. All rights reserved.