我有一個物件,它的結構是這樣的(簡化版):
{
"customConfig"/span>: {
"homepage": {
"url": "path/to/homepage",
"base_path": "www.stackoverflow.com"。
},
"組合": {
"url": "path/to/portfolio"。
"base_path": "www.github.com"。
},
"moreStuff": {
//...
}
}
現在我想檢查一個特定的字串值(在我的例子中是指鍵base_path)是否存在。
那么我怎樣才能檢查,例如,字串www.github.com是否存在于我的custom_path中? 是否存在于我的customConfig物件中的鍵base_path?
在這里,一個布爾型的回傳值就夠了。
uj5u.com熱心網友回復:
OP需要利用Object.values,以檢索所有配置物件的屬性值的陣列。然后,OP想知道some條件,比如這樣一個值的/專案的base_path值是否等于某個地址。
console.log(
"物件是否包含一個`base_path`等于'www.github.com'的專案?"。
Object.values({
"homepage": {
"url": "path/to/homepage",
"base_path": "www.stackoverflow.com"。
},
"組合": {
"url": "path/to/portfolio"。
"base_path": "www.github.com"。
},
"moreStuff": {
//...
}
}).some(item => item.base_path =='www.github.com')
);
<iframe name="sif1" sandbox="allow-forms allow-modals allow-scripts" class="snippet-box-edit snippet-box-result" frameborder="0"></iframe>
uj5u.com熱心網友回復:
你可以嘗試類似的方法
let obj = {
"customConfig"/span>: {
"homepage": {
"url": "path/to/homepage",
"base_path": "www.stackoverflow.com"。
},
"組合": {
"url": "path/to/portfolio"。
"base_path": "www.github.com".
}
}
}
let exist = Object.keys(obj. customConfig).filter(page => obj. customConfig[page]['base_path'] == 'www.github.com').length>0;
console.log(existence);
<iframe name="sif2" sandbox="allow-forms allow-modals allow-scripts" class="snippet-box-edit snippet-box-result" frameborder="0"></iframe>
uj5u.com熱心網友回復:
在屬性值為陣列或物件的情況下進行迭代回圈。
Object.values(obj)將把陣列和物件的值變成一個陣列的值,我們可以對這些值進行迭代
。
。let data = {
"customConfig"/span>: {
"homepage": {
"url": "path/to/homepage",
"base_path": "www.stackoverflow.com"。
},
"組合": {
"url": "path/to/portfolio"。
"base_path": "www.github.com".
}
}
}
//自我遞回函式回圈
let hasValue =(obj, value)=> {
return Object.values(obj)。 some(s => {
if (s ==value) {
return true;
}
if (typeof s === 'object' || Array.isArray(s) ) {
return hasValue(s, value)。
}
return false;
});
}
console.log(hasValue(data, "www.stackoverflow.com"));
<iframe name="sif3" sandbox="allow-forms allow-modals allow-scripts" class="snippet-box-edit snippet-box-result" frameborder="0"></iframe>
uj5u.com熱心網友回復:
根據customConfig的key,檢查customConfig物件中是否存在一些value。
let data = {
"customConfig"/span>: {
"homepage": {
"url": "path/to/homepage",
"base_path": "www.stackoverflow.com"。
},
"組合": {
"url": "/to/portfolio"。
"base_path": "www.github.com".
}
}
};
//為url和base_path創建陣列;這將簡化基于鍵的搜索。
const result = Object.keys( data. customConfig).reduce((acc, key) =>/span>{
const {url, base_path} = data.customConfig[key];
acc['url'].push(url)。
acc['base_path'].push(base_path)。
return acc;
} , {url:[], base_path: []});
//to search in url[/span]。
const x = result['url'].includes('/to/portfolio')。
console.log(x)。
//to search in basepath.
const y= result['base_path'].includes('www.stackoverflow.com')。
console.log(y);
<iframe name="sif4" sandbox="allow-forms allow-modals allow-scripts" class="snippet-box-edit snippet-box-result" frameborder="0"></iframe>
uj5u.com熱心網友回復:
你可以使用一個遞回函式。
為了找到某個鍵,在每個嵌套層呼叫hasOwnProperty(或者在Object.keys上使用includes),看是否在那里找到這個鍵。
要找到某個值,在Object.values()上使用includes。
要找到一個鍵/值對,找到鍵(如上)并驗證該鍵的值是否是搜索到的值:
。const containsKey = (obj, key) => Object(obj) === obj && (
obj.hasOwnProperty(key) ||
Object.values(obj)。 some(child => containsKey(child, key))
);
const containsValue = (obj, value) => Object(obj) == obj & & (
Object.values(obj).includes(value) ||
Object.values(obj)。 some(child => containsValue(child, value))
);
const containsKeyValue = (obj, key, value) => Object(obj)== obj && (
obj.hasOwnProperty(key) && obj[key] ==value ||
Object.values(obj)。 some(child => containsKeyValue(child, key, value)
);
// Example run:
let data = {
"customConfig"/span>: {
"homepage": {
"url": "path/to/homepage",
"base_path": "www.stackoverflow.com"。
},
"組合": {
"url": "path/to/portfolio"。
"base_path": "www.github.com"。
},
"moreStuff": {
//...
}
}
};
console.log(containsKey(data, "base_path")); // true>
console.log(containsValue(data, "www.github.com")); // true
console.log(containsKeyValue(data, "base_path"/span>, "www. github.com")); // true
<iframe name="sif5" sandbox="allow-forms allow-modals allow-scripts" class="snippet-box-edit snippet-box-result" frameborder="0"></iframe>
uj5u.com熱心網友回復:
我是這樣解決的(簡化):)
const specificValueExists = (url: string)。boolean => {
return Object.values(myObject).indexOf(url)> -1;
);
感謝所有建議的解決方案。
uj5u.com熱心網友回復:
正則運算式在這里可以派上用場:
。const x = {
"customConfig"/span>: {
"homepage": {
"url": "path/to/homepage",
"base_path": "www.stackoverflow.com"。
},
"組合": {
"url": "path/to/portfolio"。
"base_path": "www.github.com"。
},
"moreStuff": {
//...
}
}
}
const regex = /base_path": "www.github.com/
const t = regex.test(JSON. stringify(x.customConfig)
console.log(t)
<iframe name="sif6" sandbox="allow-forms allow-modals allow-scripts" class="snippet-box-edit snippet-box-result" frameborder="0"></iframe>
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/312771.html
標籤:
上一篇:如何將NumPy(k,n,m)大小的ndarray轉換成(k)大小的dttype=objectndarray的(n,m)大小ndarrays?
