簡體   English   中英

如何基於從 Javascript/ES6 中的一個數組中使用過濾條件過濾兩個數組來創建對象?

[英]How to create an object based on filtering two arrays with a filter criteria from one array in Javascript/ES6?

假設我有兩個長度相同的數組:

const arr_one = [1,2,null,4,null,6];
const arr_two = ["a","b","c","d","e","f"];

現在,我想創建一個名為一個對象arr_final出來的,它使用的值arr_twokeys和值arr_one作為valuesarr_final ,但僅適用於價值arr_one是不是null

所以想要的結果是:

const obj_final = {"a": 1, "b": 2, "d": 4, "f": 6}

當前解決方案

目前,我有一個帶有 if 檢查的 for 循環,並希望將其更改為更短的代碼:

let arr_final = {};
for (const [i, v] of arr_one.entries()) {
    if (v != null) {
        arr_final[arr_two[i]] = v
    }
};

我怎樣才能用最少的代碼行來實現這一點?

這是最短的單行方法,只需要 1 次數組迭代

 const arr_one = [1,2,null,4,null,6]; const arr_two = ["a","b","c","d","e","f"]; const fa = arr_one.reduce((a, e, i) => e ? { ...a, [arr_two[i]]: e } : a ,{}); console.log(fa);

您的代碼看起來最佳,這是您的解決方案的另一個版本:

 const arr_one = [1,2,null,4,null,6]; const arr_two = ["a","b","c","d","e","f"]; let arr_final={} arr_one.map((itm,indx)=>{ if(itm!==null){ arr_final[arr_two[indx]]=itm } }) console.log(arr_final)

使用 lodash zipObject 實用程序這里是一個參考: https ://lodash.com/docs/4.17.15#zipObject

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM