[英]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_two
為keys
和值arr_one
作為values
的arr_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.