我有物件陣列,我想將其轉換為逗號分隔的物件。
let arr = [{name:"k"},{name:"p"}];
console.log(...arr.join(','));
我得到這個 [object O object ] , [object O bject ] 我想以這種格式 {name:"k"},{name:"p"}。請幫忙。提前致謝。
uj5u.com熱心網友回復:
普通物件到字串的默認轉換結果是"[object Object]". (更多關于為什么你得到你在下面得到的特定輸出。)如果你想要不同的東西,你必須用你自己的代碼來做。
例如,您可以使用map將物件轉換為字串,然后join在結果上使用:
const result = arr.map(({name}) => `{name: ${JSON.stringify(name)}`).join(",");
現場示例:
顯示代碼片段
let arr = [{name:"k"},{name:"p"}];
const result = arr.map(({name}) => `{name: ${JSON.stringify(name)}}`).join(",");
console.log(result);
這當然只是一個特定的屬性。如果您想包含其他人,則需要在map回呼中進行回圈/映射操作(可能從Object.entries物件開始)。
const result = arr.map(obj => {
const props = Object.entries(obj).map(([name, value]) => `${name}: ${JSON.stringify(value)}`);
return `{${props}}`;
}).join(",");
現場示例:
顯示代碼片段
let arr = [{name:"k"},{name:"p"}];
const result = arr.map(obj => {
const props = Object.entries(obj).map(([name, value]) => `${name}: ${JSON.stringify(value)}`);
return `{${props}}`;
}).join(",");
console.log(result);
如果您不介意屬性名稱周圍的引號,那么正如shobe 所說,您可以通過應用于JSON.stringify整個物件來做到這一點。
const result = arr.map(obj => JSON.stringify(obj)).join(",");
但是您的問題沒有在屬性名稱周圍顯示引號。
現場示例:
顯示代碼片段
let arr = [{name:"k"},{name:"p"}];
const result = arr.map(obj => JSON.stringify(obj)).join(",");
console.log(result);
為什么你得到你得到的具體結果:
我最初對您得到的輸出感到驚訝,但經過片刻思考后確實有意義:您的代碼確實console.log(...arr.join(","))這樣做了:
- 電話
join上arr,它結合了其條目一起使用他們的默認轉換到字串的行為的字串,一個逗號之間。 - 將該字串展開成離散的引數,
console.log就像你寫的一樣console.log("[", "o", "j"。
uj5u.com熱心網友回復:
為了將物件轉換為它的字串表示形式,您需要使用 JSON.stringify 函式。所以它看起來像這樣:
let arr = [{name:"k"},{name:"p"}];
console.log(arr.map(el => JSON.stringify(el)).join(','));
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/376387.html
標籤:javascript 节点.js
