簡體   English   中英

將對象數組轉換為鍵數組、值數組

[英]Converting Array of objects to arrays of key, value array

我有一個 JSON 輸入格式,這是一個例子:

{
  "friends": [
    {
      "id": "5a8d4euyiuyiuyhiuyc022c7158d5",
      "name": "Gloria Coffey"
    },
    {
      "id": "5a8d4e2rytuyiyuyiytiy3e426",
      "name": "Shawn Ellison"
    }
  ]
}

我會將其轉換為數組鍵:值數組,如下所示:

[[id : "5a8d4euyiuyiuyhiuyc022c7158d5", name:"Gloria Coffey"],[id : "5a8d4e2rytuyiyuyiytiy3e426", name:"Shawn Ellison"]]

我所做的:

search(event) {
    this.searchRmpmService.getResults(event.query).then(data => {
    this.results = data.friends;
    console.log(this.results);
    let output = [];
    output= Object.entries(this.results);
    console.log(output);
});

this.results的第一個 console.log 向我打印了一個對象數組

然后我的output數組打印:

0:Array(2)
0:"0" <-- ??
1:{
   id:"5a8d4e2ffead0c022c7158d5",
   name:"Gloria Coffey"
}length:2__proto__:Array(0)

我會是什么

id : 5a8d4e2ffead0c022c7158d5
name : Gloria Coffey

你想要達到的目標是不可能的。 您想要的最接近的解決方案是這樣的:

 let friends = [ { id: "5a8d4euyiuyiuyhiuyc022c7158d5", name: "Gloria Coffey" }, { id: "5a8d4e2rytuyiyuyiytiy3e426", name: "Shawn Ellison" } ] function convert(param) { let res = {} for (let item of param) { let id = item.id res[id] = item.name } return res } console.log(convert(friends))

這不是數組,但您可以像這樣訪問它:

let myObj = convert(friends)
console.log(myObj['5a8d4euyiuyiuyhiuyc022c7158d5'])

我希望這會做你想做的。

你也可以像這樣使用Object.fromEntries()來做到這一點:

function flattenArrayToObject(arr) {
  let entries = arr.map(el => [el.id, el.name])
  let obj = Object.fromEntries(entries)
  return obj;
}

或者,如果您確實需要,則使用單襯:

let flattenArray = arr => Object.fromEntries(arr.map(el => [el.id, el.name]))

堆棧片段中的演示

 let friends = [ {id: "158d5", name: "Gloria"}, {id: "3e426", name: "Shawn"} ] function flattenArrayToObject(arr) { let entries = arr.map(el => [el.id, el.name]) // [["158d5","Gloria"], ["3e426","Shawn"]] let obj = Object.fromEntries(entries) return obj; } console.log(flattenArrayToObject(friends))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM