給數組裏面的對象添加一個新的數據

ES6寫法

 data.data.forEach((item,index) => {
       console.log(item.excerpt.length)
       let excerpt3 = {excerpt2:''};
       let newObj
       if(item.excerpt.length > 120){
           excerpt3.excerpt2 = item.excerpt.slice(0,120);
           newObj =  Object.assign(item,excerpt3);
           // this.DataList[index].excerpt2 = excerpt2;
           console.log(newObj)
           this.DataList.push(newObj);
        }
       });
                

如果目標對象中的屬性具有相同的鍵,則屬性將被源中的屬性覆蓋。後來的源的屬性將類似地覆蓋早先的屬性。

Object.assign 方法只會拷貝源對象自身的並且可枚舉的屬性到目標對象。該方法使用源對象的[[Get]]和目標對象的[[Set]],所以它會調用相關 getter 和 setter。因此,它分配屬性,而不僅僅是複製或定義新的屬性。如果合併源包含getter,這可能使其不適合將新屬性合併到原型中。爲了將屬性定義(包括其可枚舉性)複製到原型,應使用Object.getOwnPropertyDescriptor()Object.defineProperty() 。

String類型和 Symbol 類型的屬性都會被拷貝。

在出現錯誤的情況下,例如,如果屬性不可寫,會引發TypeError,如果在引發錯誤之前添加了任何屬性,則可以更改target對象。

注意,Object.assign 會跳過那些值爲 null 或 undefined 的源對象。

深拷貝問題

針對深拷貝,需要使用其他方法,因爲 Object.assign()拷貝的是屬性值。假如源對象的屬性值是一個指向對象的引用,它也只拷貝那個引用值。

 

利用新建數組給原數組添加數據

 data.data.forEach((item,index) => {
      let DataList2 = {excerpt2:''};
      DataList2 = item;
      DataList2.excerpt2 =item.excerpt.slice(0,120);
      this.DataList.push(DataList2);
      console.log(DataList2)
   })

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章