只是想知道使用陣列將資料從一個物件過濾到另一個物件的最佳方法是什么
我想將整個行selected_city_codes從airport_data_1到移動到airport_data_2
airport_data_1 = [{"departure_time":"12:00","arrival_time":"03:00","city_id":"BOS"},
{"departure_time" :"12:00","arrival_time":"03:00","city_id":"BOS"},
{"departure_time" :"01:00","arrival_time":"04:00","city_id":"SFO"},
{"departure_time" :"03:00","arrival_time":"05:00","city_id":"BOS"},
{"departure_time" :"03:00","arrival_time":"05:00","city_id":"SFO"},
{"departure_time" :"04:00","arrival_time":"06:00","city_id":"SJC"},
{"departure_time" :"04:00","arrival_time":"06:00","city_id":"JFK"},
{"departure_time" :"06:00","arrival_time":"09:00","city_id":"SJC"}];
airport_data_2 = [];
selected_city_codes = ['SJC','JFK']; //items to remove from `airport_data_1` to `airport_data_2`
//my attempt to remove the listed values from selected_city_codes
for(i in selected_city_codes) {
airport_data_2 = airport_data_2.filter(item => item.city_id != selected_city_codes[i]);
}
期望的結果
airport_data_1 = [{"departure_time":"12:00","arrival_time":"03:00","city_id":"BOS"},
{"departure_time" :"12:00","arrival_time":"03:00","city_id":"BOS"},
{"departure_time" :"01:00","arrival_time":"04:00","city_id":"SFO"},
{"departure_time" :"03:00","arrival_time":"05:00","city_id":"BOS"},
{"departure_time" :"03:00","arrival_time":"05:00","city_id":"SFO"}];
airport_data_2 = [{"departure_time" :"04:00","arrival_time":"06:00","city_id":"SJC"},
{"departure_time" :"04:00","arrival_time":"06:00","city_id":"JFK"},
{"departure_time" :"06:00","arrival_time":"09:00","city_id":"SJC"}];
uj5u.com熱心網友回復:
您必須過濾第一個陣列并使用類似includes檢查是否city_id在selected_city_codes:
const airport_data_1 = [
{ departure_time: '12:00', arrival_time: '03:00', city_id: 'BOS' },
{ departure_time: '12:00', arrival_time: '03:00', city_id: 'BOS' },
{ departure_time: '01:00', arrival_time: '04:00', city_id: 'SFO' },
{ departure_time: '03:00', arrival_time: '05:00', city_id: 'BOS' },
{ departure_time: '03:00', arrival_time: '05:00', city_id: 'SFO' },
{ departure_time: '04:00', arrival_time: '06:00', city_id: 'SJC' },
{ departure_time: '04:00', arrival_time: '06:00', city_id: 'JFK' },
{ departure_time: '06:00', arrival_time: '09:00', city_id: 'SJC' },
];
const selected_city_codes = ['SJC', 'JFK'];
const airport_data_2 = airport_data_1.filter((el) =>
selected_city_codes.includes(el.city_id)
);
console.log(airport_data_2);
uj5u.com熱心網友回復:
您可以使用array.reduce()將原始陣列拆分為多個部分(過濾和洗掉)。
const airport_data_1 = [{"departure_time":"12:00","arrival_time":"03:00","city_id":"BOS"},
{"departure_time" :"12:00","arrival_time":"03:00","city_id":"BOS"},
{"departure_time" :"01:00","arrival_time":"04:00","city_id":"SFO"},
{"departure_time" :"03:00","arrival_time":"05:00","city_id":"BOS"},
{"departure_time" :"03:00","arrival_time":"05:00","city_id":"SFO"},
{"departure_time" :"04:00","arrival_time":"06:00","city_id":"SJC"},
{"departure_time" :"04:00","arrival_time":"06:00","city_id":"JFK"},
{"departure_time" :"06:00","arrival_time":"09:00","city_id":"SJC"}];
const selected_city_codes = ['SJC','JFK']; //items to remove from `airport_data_1` to `airport_data_2`
const data = airport_data_1.reduce((s, x) => {
s[ selected_city_codes.indexOf(x.city_id) < 0 ].push(x) ; return s;} , {true: [], false:[]} )
const removedAirports = data.false;
const filteredAirports = data.true;
console.log('filteredAirports ', filteredAirports);
console.log('removedAirports ', removedAirports);
.as-console-wrapper { max-height: 100% !important; top: 0; }
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/420852.html
標籤:
下一篇:使用影片樣式更新div元素的內容
