[英]How to return values after boolean in multidemensional array?
我試圖過濾多維數組以僅返回此數組中 boolean 之后的索引。
該數組中的第一個鍵需要像“Tafeblad model”和“Uitstraling”一樣留在數組中,以及布爾值后面的可選值
["Tafelblad model", true, "Rechthoekig", "Vierkant", "Ovaal / Rond / Overig"],
["Uitstraling", "Licht robuust", "Midden robuust", true, "Zwaar robuust", "Weinig", "Midden (standaard)", true, "Veel oneffenheden en scheuren"]`
新數組就像
["Tafelblad model", "Rechthoekig"],
["Uitstraling", "Zwaar robuust", "Veel oneffenheden en scheuren"]`
您可以關閉您設置的標志以保留您看到的下一個條目:
let flag = true; // We want the first one
const newArray = array.filter(entry => {
const keep = flag;
flag = typeof entry === "boolean";
return keep;
});
現場示例:
function example(array) { let flag = true; // We want the first one const newArray = array.filter(entry => { const keep = flag; flag = typeof entry === "boolean"; return keep; }); console.log(newArray); } example(["Tafelblad model", true, "Rechthoekig", "Vierkant", "Ovaal / Rond / Overig"]); example(["Uitstraling", "Licht robuust", "Midden robuust", true, "Zwaar robuust", "Weinig", "Midden (standaard)", true, "Veel oneffenheden en scheuren"]);
您可以為此使用.filter(..)
function,這是一個示例:
let arr1 = ["Tafelblad model", true, "Rechthoekig", "Vierkant", "Ovaal / Rond / Overig"]; let arr2 = ["Uitstraling", "Licht robuust", "Midden robuust", true, "Zwaar robuust", "Weinig", "Midden (standaard)", true, "Veel oneffenheden en scheuren"]; const filterFn = (value, index, arr) => { return index === 0 || arr[index - 1] === true; }; arr1 = arr1.filter(filterFn); arr2 = arr2.filter(filterFn); console.log(arr1); console.log(arr2);
傳遞給.filter(..)
的回調 function 接收當前迭代的值、當前迭代的索引和原始數組作為參數。 filterFn
function 中的條件檢查迭代的索引是否為0
(該值是數組中的第一個值)或前一項嚴格等於true
使用map()
和filter()
let arrays = [ ["Tafelblad model", true, "Rechthoekig", "Vierkant", "Ovaal / Rond / Overig"], ["Uitstraling", "Licht robuust", "Midden robuust", true, "Zwaar robuust", "Weinig", "Midden (standaard)", true, "Veel oneffenheden en scheuren"] ] let result = arrays.map(arr => { return arr.filter((v, i) => typeof arr[i - 1] === "boolean" || i == 0); }) console.log(result)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.