国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

對(duì)象的判空、遍歷及轉(zhuǎn)換和對(duì)數(shù)組的操作

liangzai_cool / 3414人閱讀

摘要:在聯(lián)調(diào)時(shí),發(fā)現(xiàn)后臺(tái)返回的不是數(shù)組,或者返回的類型與不為空時(shí)的類型不一樣,這里小結(jié)下對(duì)對(duì)象的操作對(duì)象的判空先聲明一個(gè)對(duì)象字面量將對(duì)象轉(zhuǎn)化成字符串,然后進(jìn)行判斷是否等于字符串,直接寫無法進(jìn)行判斷使用循環(huán)來判斷,若不為空,則返回使用來判斷,返回的

在聯(lián)調(diào)時(shí),發(fā)現(xiàn)后臺(tái)返回的不是數(shù)組,或者返回的類型與不為空時(shí)的類型不一樣,這里小結(jié)下對(duì)對(duì)象的操作
1.對(duì)象的判空
/* 先聲明一個(gè)對(duì)象字面量 */
let isObject = {};

將json對(duì)象轉(zhuǎn)化成json字符串,然后進(jìn)行判斷是否等于字符串"{}",直接寫{}無法進(jìn)行判斷

console.log(JSON.stringify(isObject) == "{}");

使用for循環(huán)來判斷,若不為空,則返回false

let listObject = { a: 1, b: 3, c: 4 };
function isEmptyObject() {
    for(let key in listObject) {
        return false;
    }
    return true;
}
console.log(isEmptyObject());

使用Object.keys()來判斷,返回的是一個(gè)數(shù)組,根據(jù)數(shù)組長(zhǎng)度來判斷

function isEmptyObject2(obj) {
    return Object.keys(obj).length == 0;
}
console.log(isEmptyObject2(isObject));

對(duì)這個(gè)對(duì)象中一定存在的屬性進(jìn)行判斷

console.log(isObject.id == null);
2.將對(duì)象轉(zhuǎn)換成數(shù)組
let listData = {a: 1, b: 2, c: 3};
let temporaryArray = [];

只需要將對(duì)象中的值轉(zhuǎn)換成數(shù)組時(shí)

for(let i in listData) {
    temporaryArray.push(listData[i]);
}
console.log(temporaryArray);

將對(duì)象中的鍵與值一起轉(zhuǎn)換成數(shù)組

let temporaryArray2 = [];
for(let i in listData) {
    let temporaryObject = {};
    temporaryObject[i] = listData[i];
    temporaryArray2.push(temporaryObject);
}
console.log(temporaryArray2);

使用Object原生屬性

console.log(Object.values(listData));
3.將非數(shù)組轉(zhuǎn)換成數(shù)組

Array.prototype.slice.call(arguments)

/* 該方法可以將類數(shù)組對(duì)象轉(zhuǎn)換為數(shù)組,所謂類數(shù)組對(duì)象,就是含 length 和索引屬性的對(duì)象
*  返回的數(shù)組長(zhǎng)度取決于對(duì)象 length 屬性的值,并且非索引屬性的值或索引大于 length 的值都不會(huì)被返回到數(shù)組中
*  Array.prototype.slice.call(obj,start,end) start:方法中slice截取的開始位置,end終止位置,默認(rèn)從0開始
* */
let testObject = {
    0: "a",
    1: "b",
    2: "c",
    name: "admin",
    length: 3,
};

/* 對(duì)象中必須定義length,且屬性值不能為非數(shù)字,非數(shù)字無法返回 */
console.log(Array.prototype.slice.call(testObject));

/* 或者簡(jiǎn)寫為[].slice.call(testObject) */
console.log([].slice.call(testObject));

Array.from()

/* Array、Set、Map 和字符串都是可迭代對(duì)象(WeakMap/WeakSet 并不是可迭代對(duì)象)
*  這些對(duì)象都有默認(rèn)的迭代器,即具有 Symbol.iterator 屬性
*  所有通過生成器創(chuàng)建的迭代器都是可迭代對(duì)象
*  可以用 for of 循環(huán)
 * */
let testObject2 = {
    0: "a",
    1: "b",
    2: "c",
    name: "admin",
    length: 3,
};
console.log(Array.from(testObject2));
4.判斷是否為數(shù)組,返回true則為數(shù)組
let temporaryArray3 = [1,2,1,2,3];
console.log(temporaryArray3 instanceof Array);
console.log(temporaryArray3.constructor == Array);
console.log(Array.isArray(temporaryArray3));
console.log(Object.prototype.toString.call(temporaryArray3) === "[object Array]");
5.將數(shù)組轉(zhuǎn)換成鍵值對(duì)對(duì)象,可以利用for循環(huán)
let transformObject = Object.assign({}, temporaryArray3);
console.log(transformObject);
let transformObject2 = {...temporaryArray3};
console.log(transformObject2);
6.講講深拷貝與淺拷貝
淺拷貝其實(shí)只是引用的拷貝,兩者還是指向內(nèi)存中的同一個(gè)地址
深拷貝就是兩者指向不同的內(nèi)存地址,是真正意義上的拷貝

Object.assign

assign對(duì)對(duì)象分配賦值,實(shí)現(xiàn)淺拷貝,但是它有一個(gè)特殊的地方,可以處理第一層的深拷貝。
assign(targetObject, obj, obj1) assign會(huì)改變targetObject的值,較好的做法就是將targetObject定義為空對(duì)象{}
assign是將這個(gè)3者合并,若有相同的屬性,后面的屬性會(huì)覆蓋前面對(duì)象的屬性
let temporaryObject2 = {a: 1, d: {e: 3}};
let temporaryObject3 = {b: 1,a: 2};
let mergeObject = Object.assign({}, temporaryObject2, temporaryObject3);
console.log(mergeObject);
/* mergeObject.d.e不會(huì)改變temporaryObject2里a的值,但會(huì)改變temporaryObject2里e的值 */
mergeObject.a = 5;
mergeObject.d.e = 5;
console.log(mergeObject);

較常用的對(duì)象深拷貝方法

let copyObject = JSON.parse(JSON.stringify(temporaryObject2));
console.log(copyObject);
copyObject.a = 0;
console.log(copyObject);

數(shù)組slice淺拷貝

let copyArray = [1, 2, [1, 5], 3];
let copyArray1 = copyArray.slice(0);
console.log(copyArray1);
copyArray1[1] = 20;
copyArray1[2][1] = 23;
console.log(copyArray1);

數(shù)組concat淺拷貝

let copyArray2 = copyArray.concat();
console.log(copyArray2);
copyArray2[1] = 20;
copyArray2[2][1] = 23;
console.log(copyArray2);
正在努力學(xué)習(xí)中,若對(duì)你的學(xué)習(xí)有幫助,留下你的印記唄(點(diǎn)個(gè)贊咯^_^)

往期好文推薦:

判斷ios和Android及PC端

純css實(shí)現(xiàn)瀑布流(multi-column多列及flex布局)

實(shí)現(xiàn)文字的省略號(hào)

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/98675.html

相關(guān)文章

  • 報(bào)表工具JS開發(fā)--字符串

    摘要:它將在中查找與相匹配的子字符串,然后用來替換這些子串。這里舉個(gè)字符串替換的例子結(jié)果將返回字符串的查找方法用于檢索字符串中指定的子字符串,他將返回中第一個(gè)與相匹配的子串的起始位置。其中是起始,提取長(zhǎng)度為的新字符串。 在報(bào)表開發(fā)過程中,有些需求可能無法通過現(xiàn)有的功能來實(shí)現(xiàn),需要開發(fā)人員二次開發(fā),以FineReport為例,可以使用網(wǎng)頁腳本、API接口等進(jìn)行深入的開發(fā)與控制。考慮到JS腳本開...

    pakolagij 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<