最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

es6常見數(shù)組、對象中的整合與拆解方法示例

 更新時間:2025年06月14日 10:57:56   作者:拉不動的豬  
在ES6中合并兩個數(shù)組對象通常指的是將兩個數(shù)組的內(nèi)容合并到一個新的數(shù)組中,而保持數(shù)組內(nèi)對象的完整性,這篇文章主要介紹了es6常見數(shù)組、對象中的整合與拆解的相關(guān)資料,需要的朋友可以參考下

一、對象整合優(yōu)化方案

1. 合并對象(Object.assign/ 展開語法)

場景:合并多個配置項、表單數(shù)據(jù)更新。

方案:使用 Object.assign 或展開語法(...)。

示例

// 合并配置項
const defaultConfig = { theme: 'light', fontSize: 14 };
const userConfig = { fontSize: 16, showSidebar: true };
const finalConfig = { ...defaultConfig, ...userConfig };
// 結(jié)果: { theme: 'light', fontSize: 16, showSidebar: true }

項目應(yīng)用

在 React 項目中,合并 props 和默認值:

const MyComponent = (props) => {
  const { name = '默認值', age } = props;
  // 等價于: const defaults = { name: '默認值' };
  // const { name, age } = { ...defaults, ...props };
};

2. 深度合并對象

場景:嵌套對象的合并(如復(fù)雜配置、狀態(tài)管理)。

方案:使用 lodash.merge 或自定義遞歸函數(shù)。

示例

import merge from 'lodash/merge';

const obj1 = { a: { b: 1 } };
const obj2 = { a: { c: 2 } };
const merged = merge(obj1, obj2);
// 結(jié)果: { a: { b: 1, c: 2 } }

項目應(yīng)用

在 Vuex/Pinia 中合并狀態(tài):

const state = {
  user: {
    info: { name: '張三', age: 20 },
    settings: { theme: 'light' }
  }
};

// 更新user.info,保留其他字段
const newUserInfo = { age: 21, gender: '男' };
state.user.info = merge(state.user.info, newUserInfo);

3. 對象屬性過濾 / 轉(zhuǎn)換

場景:接口數(shù)據(jù)清洗(如移除空值、重命名字段)。

方案:使用 Object.fromEntries + Object.entries。

示例

// 過濾空值
const data = { name: '張三', age: null, email: '' };
const filteredData = Object.fromEntries(
  Object.entries(data).filter(([key, value]) => value !== null && value !== '')
);
// 結(jié)果: { name: '張三' }

項目應(yīng)用

在表單提交前過濾無效數(shù)據(jù):

const formData = { username: 'test', password: '', remember: false };
const validData = Object.fromEntries(
  Object.entries(formData).filter(([_, value]) => value !== '')
);

二、數(shù)組整合優(yōu)化方案

1. 數(shù)組合并與去重

場景:合并分頁數(shù)據(jù)、合并標(biāo)簽列表。

方案:使用 Set 或 Array.reduce。

示例

// 合并并去重
const arr1 = [1, 2, 3];
const arr2 = [3, 4, 5];
const merged = [...new Set([...arr1, ...arr2])];
// 結(jié)果: [1, 2, 3, 4, 5]

項目應(yīng)用

在無限滾動加載中合并數(shù)據(jù):

const [list, setList] = useState([]);

// 加載更多
const loadMore = (newData) => {
  setList([...new Set([...list, ...newData])]);
};

2. 數(shù)組對象合并(按 ID)

場景:更新列表中的部分數(shù)據(jù)(如評論列表更新某條評論)。

方案:使用 Map 或 Array.find。

示例

const list = [
  { id: 1, name: 'A' },
  { id: 2, name: 'B' }
];
const updatedItem = { id: 2, name: 'B(已更新)' };

const newList = list.map(item => 
  item.id === updatedItem.id ? updatedItem : item
);

項目應(yīng)用

在 React 中更新列表項:

const updateComment = (commentId, newContent) => {
  setComments(prev => prev.map(item => 
    item.id === commentId ? { ...item, content: newContent } : item
  ));
};

3. 數(shù)組分組與聚合

場景:按類別分組商品、統(tǒng)計數(shù)據(jù)。

方案:使用 Array.reduce

示例

const products = [
  { id: 1, category: '水果', name: '蘋果' },
  { id: 2, category: '蔬菜', name: '胡蘿卜' },
  { id: 3, category: '水果', name: '香蕉' }
];

const grouped = products.reduce((acc, item) => {
  (acc[item.category] = acc[item.category] || []).push(item);
  return acc;
}, {});
// 結(jié)果: { 水果: [{...}, {...}], 蔬菜: [{...}] }

項目應(yīng)用

在電商項目中按分類展示商品:

const renderProductsByCategory = () => {
  const groupedProducts = products.reduce((acc, p) => {
    (acc[p.category] = acc[p.category] || []).push(p);
    return acc;
  }, {});

  return Object.entries(groupedProducts).map(([category, items]) => (
    <div key={category}>
      <h3>{category}</h3>
      <ul>
        {items.map(item => <li key={item.id}>{item.name}</li>)}
      </ul>
    </div>
  ));
};

三、實戰(zhàn)技巧

1. 鏈?zhǔn)讲僮骱喕壿?/h3>

場景:復(fù)雜數(shù)據(jù)處理(如篩選、轉(zhuǎn)換、分組)。

示例

const data = [
  { id: 1, name: 'A', score: 85 },
  { id: 2, name: 'B', score: 92 },
  { id: 3, name: 'C', score: 78 }
];

// 篩選高分,提取名字,轉(zhuǎn)大寫
const highScores = data
  .filter(item => item.score >= 80)
  .map(item => item.name.toUpperCase());
// 結(jié)果: ['A', 'B']

2. 使用工具庫提升效率

  • Lodash:提供 merge、groupBy、keyBy 等工具函數(shù)。

    import { groupBy, keyBy } from 'lodash';
    
    const users = [
      { id: 1, role: 'admin' },
      { id: 2, role: 'user' },
      { id: 3, role: 'user' }
    ];
    
    const usersByRole = groupBy(users, 'role');
    // 結(jié)果: { admin: [{...}], user: [{...}, {...}] }
    

  • Ramda:函數(shù)式編程工具庫,支持管道操作。

    import { pipe, filter, map, toUpper } from 'ramda';
    
    const processData = pipe(
      filter(item => item.score >= 80),
      map(item => item.name),
      map(toUpper)
    );
    
    const result = processData(data);
    

3. 在狀態(tài)管理中應(yīng)用

場景:Redux/MobX 更新嵌套狀態(tài)。

示例

// Redux reducer 中不可變更新
const initialState = {
  users: [
    { id: 1, name: '張三' },
    { id: 2, name: '李四' }
  ]
};

const reducer = (state, action) => {
  switch (action.type) {
    case 'UPDATE_USER':
      return {
        ...state,
        users: state.users.map(user => 
          user.id === action.payload.id 
            ? { ...user, ...action.payload } 
            : user
        )
      };
    default:
      return state;
  }
};

總結(jié)

到此這篇關(guān)于es6常見數(shù)組、對象中的整合與拆解的文章就介紹到這了,更多相關(guān)es6數(shù)組、對象整合與拆解內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • JavaScript?中的時間戳操作和使用詳解

    JavaScript?中的時間戳操作和使用詳解

    時間戳在編程中有著非常廣泛的應(yīng)用,比如記錄事件發(fā)生的時間、計算時間差、生成唯一的標(biāo)識符等,時間戳的使用非常重要,今天我們將一起來探討如何在?JavaScript?中獲取和操作時間戳,感興趣的朋友一起看看吧
    2025-06-06
  • JavaScript中三種變量聲明方式var、let、const的區(qū)別與實戰(zhàn)指南

    JavaScript中三種變量聲明方式var、let、const的區(qū)別與實戰(zhàn)指南

    本文解釋了JavaScript中const、var和let的區(qū)別,從作用域、變量提升、可重復(fù)聲明、可修改性等方面進行對比,建議優(yōu)先使用const聲明不需要修改的變量,使用let聲明需要修改的變量,完全避免使用var,需要的朋友可以參考下
    2026-03-03
  • 手把手教你寫一個微信小程序(推薦)

    手把手教你寫一個微信小程序(推薦)

    最近接了一個微信小程序的項目,項目需求是小程序語音識別,全景圖片觀看,登錄授權(quán),獲取個人基本信息。非常不錯,具有一定的參考借鑒價值,需要的朋友參考下吧
    2018-10-10
  • 在 JavaScript 中如何更改字符串字符

    在 JavaScript 中如何更改字符串字符

    在本文中,我們將創(chuàng)建自定義函數(shù),借助不同示例的默認字符串方法,在我們想要的任何位置替換或更改字符串中的字符,本文結(jié)合實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2023-07-07
  • js操作時間(年-月-日 時-分-秒 星期幾)

    js操作時間(年-月-日 時-分-秒 星期幾)

    js操作時間(年-月-日 時-分-秒 星期幾),需要的朋友可以參考下。
    2010-06-06
  • JavaScript基礎(chǔ)之文件上傳與下載的實現(xiàn)詳解

    JavaScript基礎(chǔ)之文件上傳與下載的實現(xiàn)詳解

    這篇文章主要為大家詳細介紹了JavaScript實現(xiàn)文件上傳與下載功能的相關(guān)資料,文中的示例代碼講解詳細,具有一定的借鑒價值,感興趣的小伙伴可以學(xué)習(xí)一下
    2023-01-01
  • js中try?catch使用遇到的問題

    js中try?catch使用遇到的問題

    大家應(yīng)該都知道try…catch的作用是測試代碼中的錯誤,下面這篇文章主要給大家介紹了關(guān)于js中try?catch使用遇到的問題,文中將問題的解決辦法介紹的非常詳細,需要的朋友可以參考下
    2023-06-06
  • 簡單談?wù)凜ommonsChunkPlugin抽取公共模塊

    簡單談?wù)凜ommonsChunkPlugin抽取公共模塊

    下面小編就為大家分享一篇簡單談?wù)凜ommonsChunkPlugin抽取公共模塊,具有很的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2017-12-12
  • JavaScript練習(xí)語法及建議總結(jié)大全

    JavaScript練習(xí)語法及建議總結(jié)大全

    JavaScript 是一個程序語言,語法規(guī)則定義了語言結(jié)構(gòu),這篇文章主要介紹了JavaScript練習(xí)語法及建議總結(jié)的相關(guān)資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2025-07-07
  • JavaScript 經(jīng)典實例日常收集整理(常用經(jīng)典)

    JavaScript 經(jīng)典實例日常收集整理(常用經(jīng)典)

    本文是小編日常收集整理些js經(jīng)典實例,非常具有參考借鑒價值,需要的朋友一起了解了解吧
    2016-03-03

最新評論

托里县| 澄江县| 叶城县| 蕉岭县| 保亭| 祁阳县| 西藏| 布拖县| 绿春县| 西乌珠穆沁旗| 合江县| 仁布县| 腾冲县| 蕉岭县| 宝清县| 临沧市| 二手房| 宜都市| 炎陵县| 天镇县| 汪清县| 新宾| 淮安市| 乌拉特前旗| 思茅市| 山阳县| 广宁县| 枣强县| 兴安县| 金寨县| 仁布县| 武威市| 谢通门县| 建瓯市| 宜宾市| 安图县| 海晏县| 莱州市| 海口市| 阿尔山市| 铜梁县|