国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

javaScript 如何獲取對象中非空的屬性

這篇具有很好參考價值的文章主要介紹了javaScript 如何獲取對象中非空的屬性。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

要獲取JavaScript對象中所有具有值的屬性,您可以使用 Object.entries()方法結合Array.prototype.filter()方法。以下是一個示例代碼:

const?obj?=?{
??name:?'John',
??age:?30,
??city:?'',
??country:?'USA'
};

const?propertiesWithValues?=?Object.entries(obj).filter(([key,?value])?=>?value?!==?'');

const?propertyNames?=?propertiesWithValues.map(([key,?value])?=>?key);

console.log(propertyNames);

在上述示例中,我們定義了一個帶有多個屬性的對象obj。其中,city屬性的值為空字符串。

使用Object.entries(obj)可以將一個對象轉換為包含?鍵值對?的數(shù)組。每個鍵值對都是由鍵和值組成的數(shù)組,如[key, value]。

接下來,我們使用.filter()方法對鍵值對數(shù)組進行過濾。我們檢查每個鍵值對中的值value是否為空字符串(value !== ''),從而篩選出具有值的屬性。

最后,我們使用.map()方法將篩選后的鍵值對數(shù)組轉換為只包含屬性名的數(shù)組。

最終,我們將具有值的屬性名數(shù)組打印到控制臺,以展示對象中具有值的屬性。

輸出結果將是:["name", "age", "country"],表示nameagecountry這幾個屬性在對象中都具有值。

您可以根據需要修改obj對象的屬性及其值,并使用類似的方法獲取具有值的屬性列表。

javaScript獲取對象中有值的屬性,重新組成一個對象

要獲取JavaScript對象中具有值的屬性,并將其重新組成一個新的對象,您可以使用Object.entries()方法結合Array.prototype.reduce()方法。

以下是一個示例代碼:

const?obj?=?{
??name:?'John',
??age:?30,
??city:?'',
??country:?'USA'
};

const?newObj?=?Object.entries(obj).reduce((acc,?[key,?value])?=>?{
??if?(value?!==?'')?{
????acc[key]?=?value;
??}
??return?acc;
},?{});

console.log(newObj);

在上述示例中,我們定義了一個帶有多個屬性的對象obj。其中,city屬性的值為空字符串。

使用Object.entries(obj)將對象轉換為鍵值對數(shù)組。

然后,我們使用.reduce()方法對鍵值對數(shù)組進行歸約。我們遍歷每個鍵值對,如果值value不為空字符串(value !== ''),則將這個鍵值對添加到初始為空對象的acc累加器中。

最后,我們將得到的新對象newObj打印到控制臺,展示了只包含具有值的屬性的新對象。

輸出結果將是:{ name: "John", age: 30, country: "USA" },表示新對象只包含具有值的屬性。

您可以根據需要修改obj對象的屬性及其值,并使用類似的方法獲取具有值的屬性,并將其重新組成一個新的對象。

javaScript 獲取對象

在 JavaScript 中,可以通過以下幾種方式獲取對象:

  1. 對象字面量: 可以使用花括號?{}?來定義一個對象,并直接獲取其中的屬性。例如:

    const?obj?=?{?name:?'Alice',?age:?20?};
    console.log(obj.name);?//?輸出:Alice
    console.log(obj.age);?//?輸出:20
  2. 點表示法: 可以使用點?.?符號來獲取對象的屬性。例如:

    const?obj?=?{?name:?'Bob',?age:?25?};
    console.log(obj.name);?//?輸出:Bob
    console.log(obj.age);?//?輸出:25
  3. 方括號表示法: 可以使用方括號?[]?來獲取對象的屬性,屬性名作為字符串傳入。這種方式適用于屬性名包含特殊字符或動態(tài)生成的情況。例如:

    const?obj?=?{?'user-name':?'Charlie',?age:?30?};
    console.log(obj['user-name']);?//?輸出:Charlie
    console.log(obj['age']);?//?輸出:30

    或者也可以使用變量來表示屬性名:

    const?propName?=?'name';
    const?obj?=?{?name:?'Dave',?age:?35?};
    console.log(obj[propName]);?//?輸出:Dave
  4. 使用 Object 的方法: JavaScript 提供了一些 Object 的方法來操作對象,例如?Object.keys()、Object.values()、Object.entries()?等。這些方法可以用來獲取對象的鍵、值或鍵值對數(shù)組。例如:

    const?obj?=?{?name:?'Eve',?age:?40?};
    const?keys?=?Object.keys(obj);
    console.log(keys);?//?輸出:['name',?'age']
    
    const?values?=?Object.values(obj);
    console.log(values);?//?輸出:['Eve',?40]
    
    const?entries?=?Object.entries(obj);
    console.log(entries);?//?輸出:[['name',?'Eve'],?['age',?40]]

以上是常用的獲取對象的方式,根據具體的需求選擇適合的方法。

javaScript 復制對象

在 JavaScript 中,拷貝對象有多種方法,包括淺拷貝和深拷貝。

1. 淺拷貝(Shallow Copy): 淺拷貝創(chuàng)建一個新對象,并復制原始對象的屬性到新對象中。新對象的屬性值是原始對象屬性值的引用。實現(xiàn)淺拷貝的方法有:

  • 使用擴展運算符(Spread Operator):使用{...}將原始對象的屬性展開到新對象中。

  • 使用Object.assign()方法:將原始對象復制到一個空對象中。

  • 使用數(shù)組的slice()方法:僅適用于數(shù)組對象。

//?使用擴展運算符
const?originalObj?=?{?name:?'Alice',?age:?20?};
const?newObj?=?{?...originalObj?};

//?使用?Object.assign()
const?originalObj?=?{?name:?'Alice',?age:?20?};
const?newObj?=?Object.assign({},?originalObj);

//?使用?slice()?方法(僅適用于數(shù)組)
const?originalArr?=?[1,?2,?3];
const?newArr?=?originalArr.slice();

這些方法都是淺拷貝,意味著只有第一層的屬性會被復制,對于嵌套對象或數(shù)組,仍然是引用。

2. 深拷貝(Deep Copy): 深拷貝創(chuàng)建一個新對象,并遞歸地復制原始對象及其所有嵌套對象的屬性。深拷貝生成的對象完全獨立于原始對象,修改一個對象不會影響另一個對象。實現(xiàn)深拷貝的方法有:

  • 使用遞歸:遍歷原始對象的所有屬性,如果是對象則遞歸調用深拷貝函數(shù)。

  • 使用JSON.parse()JSON.stringify():將對象序列化為 JSON 字符串,然后再解析為新的對象。這種方法對于大多數(shù)情況都有效,但不適用于不能被 JSON 序列化的部分(如函數(shù)、循環(huán)引用)。

//?使用遞歸
function?deepCopy(obj)?{
??if?(typeof?obj?!==?'object'?||?obj?===?null)?{
????return?obj;
??}
??
??const?copy?=?Array.isArray(obj)???[]?:?{};
??for?(let?key?in?obj)?{
????copy[key]?=?deepCopy(obj[key]);
??}
??return?copy;
}

const?originalObj?=?{?name:?'Alice',?age:?20?};
const?newObj?=?deepCopy(originalObj);

//?使用?JSON.parse()?和?JSON.stringify()
const?originalObj?=?{?name:?'Alice',?age:?20?};
const?newObj?=?JSON.parse(JSON.stringify(originalObj));

使用遞歸方法可以處理循環(huán)引用的情況,但要注意它可能導致性能問題。而使用JSON.parse()JSON.stringify()的方法簡單且適用于大多數(shù)情況,但不能處理特殊類型的屬性。

根據你的需求選擇適合的拷貝方法,淺拷貝適用于簡單對象的復制,而深拷貝適用于需要完全獨立的對象的復制。文章來源地址http://www.zghlxwxcb.cn/news/detail-618441.html

到了這里,關于javaScript 如何獲取對象中非空的屬性的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

本文來自互聯(lián)網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • JavaScript對象數(shù)組根據某個屬性值篩選分類

    ?? 作者 : coderYYY ?? 個人簡介 :前端程序媛,目前主攻 web前端 ,后端輔助,其他技術知識也會偶爾分享??歡迎和我一起交流!??(評論和私信一般會回?。。??? 個人專欄推薦 :《前端項目教程以及代碼》 在開發(fā)中,這種需求還是挺常見的,常用于處理后端返回的數(shù)據

    2024年02月06日
    瀏覽(25)
  • JavaScript   Array對象(屬性、方法)   留言板案例

    JavaScript Array對象(屬性、方法) 留言板案例

    一、創(chuàng)建數(shù)組對象的方式 var arrOb=new Array(值,........) var arrOb=Array(值,.......) var arrOb= [ 值,.........] var arrOb=new Array(n); arrOb [ 0]=值1; arrOb [ 1]=值2; 二、數(shù)組的屬性 length ? ? ?//數(shù)組中元素的數(shù)目 三、數(shù)組的方法 1、轉為字符串 2、 join(\\\'連接符\\\') ? ? ? ? 將數(shù)組元素連接成字符串? ?

    2024年02月06日
    瀏覽(28)
  • 04、javascript 修改對象中原有的屬性值、修改對象中原有屬性的名字(兩種方式)、添加對象中新屬性等的操作

    04、javascript 修改對象中原有的屬性值、修改對象中原有屬性的名字(兩種方式)、添加對象中新屬性等的操作

    其一、代碼為: // 想將 obj 中的 flag 值,根據不同的值來變化(即:修改對象中原有的屬性值); 其二、頁面展示為: 其三、 js 中 for-in 的用法: // for-in 是一種特殊的 for 循環(huán) 專門用來循環(huán)對象; 注意:普通的 for 循環(huán) 可以單獨循環(huán)、可以循環(huán)數(shù)組、可以偽數(shù)組、但無法循環(huán)

    2024年02月09日
    瀏覽(26)
  • JavaScript之深度克隆、多種實現(xiàn)方式、列舉各種方式的優(yōu)缺點、對象自有屬性、拷貝、復制

    在 JavaScript 中,對象和數(shù)組是引用類型,當將一個對象或數(shù)組賦值給另一個變量時,它們實際上是共享同一塊內存空間。這意味著對一個對象或數(shù)組的修改會影響到所有引用它的變量。 為了創(chuàng)建一個獨立的副本,可以使用深克隆。 JSON.stringify() 方法將 JavaScript 對象轉換為一個

    2024年02月02日
    瀏覽(35)
  • JavaScript獲取數(shù)組對象里面的鍵(key)和值(value)

    JavaScript獲取數(shù)組對象里面的鍵(key)和值(value)

    知識專欄 專欄鏈接 JavaScript知識專欄 https://blog.csdn.net/xsl_hr/category_12024214.html?spm=1001.2014.3001.5482 有關JavaScript的相關知識可以前往JavaScript知識專欄查看復習??! 在后臺管理系統(tǒng)的項目開發(fā)中,對于 后端接口返回的數(shù)據進行處理 是一件很重要的事情。有時候返回的值是 json格式

    2023年04月15日
    瀏覽(23)
  • 【JavaScript】函數(shù) ⑥ ( 使用 arguments 獲取所有實參 | arguments 內置對象 | 偽數(shù)組概念 )

    【JavaScript】函數(shù) ⑥ ( 使用 arguments 獲取所有實參 | arguments 內置對象 | 偽數(shù)組概念 )

    在 定義 JavaScript 函數(shù) 時 , 有時 不確定 形參的個數(shù) , 形參寫少了不夠用 , 寫多了又很浪費 , 這里 推薦使用 arguments 內置參數(shù)對象 ; 在 JavaScript 的 每個函數(shù) 的 內部都可以訪問 內置的 arguments 對象 , 該對象中 包含了 調用者 傳遞給函數(shù)的所有 實參 , 即使 在 函數(shù) 形參 中沒有明

    2024年04月22日
    瀏覽(26)
  • 如何在 JavaScript 中將數(shù)組轉為對象

    如何在 JavaScript 中將數(shù)組轉為對象

    首先,我們需要明白對象具有鍵和值。 如果我們想把某個東西轉換成一個 對象 ,我們需要傳遞具有這兩個要求的東西:鍵和值。 滿足這些要求的參數(shù)有兩種類型: 具有嵌套鍵值對的數(shù)組 Map 對象 這是一個帶有鍵值對的嵌套數(shù)組 當我們應用它時,我們可以使用 Object.fromEnt

    2024年02月01日
    瀏覽(24)
  • javaScript中對象使用遍歷渲染鍵值對取值,Vue的{{}}中寫方法獲取值。

    ?類似于這樣的數(shù)據有若干條,我們希望展示的方式為 我的朋友: ? ? ? ? 陪我同眠的床伴【熊貓:花花,狗熊:阿壯】 此時在代碼中的應該如果來寫? {{?item[Object.keys(item)[0]]?}}?會顯示數(shù)組元素的值,而?(Object.keys(item)[0])?會顯示數(shù)組元素的鍵。 i tem[Object.keys(item)[0]]會根

    2024年01月17日
    瀏覽(20)
  • 【華為OD統(tǒng)一考試B卷 | 200分】返回矩陣中非1的元素個數(shù)( C++ Java JavaScript python)

    華為OD在線OJ: 已購買本專欄用戶,請私信博主開通賬號,在線刷題?。?! 在線OJ:立即刷題 題庫專欄:2023華為OD機試(A卷+B卷)(C++JavaJSPy) 題目描述 存在一個m*n的二維數(shù)組,其成員取值范圍為0,1,2。 其中值為1的元素具備同化特性,每經過1S,將上下左右值為0的元素同化為

    2024年02月07日
    瀏覽(24)
  • JavaScript代理模式:如何實現(xiàn)對象的動態(tài)代理

    在JavaScript中,代理模式是一種常見的設計模式,它允許我們在不改變對象本身的情況下,通過代理對象來控制對象的訪問。代理模式可以用于實現(xiàn)緩存、權限控制、遠程調用等功能。 代理模式是指在訪問對象時引入一定程度的間接性,因為這種間接性可以附加多種用途,所

    2024年02月11日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包