簡體   English   中英

將 Json 對象數組值轉換為單個數組

[英]Converting Json Object array Values to a single array

再會

我正在嘗試使用自動完成 jquery 框架.. 購買我的問題是如何從 json 文件或僅像下面這樣的快速鍵入的 json 對象獲取我的對象並將所有 Object.values(arry) 獲取到單個數組像下面..

["samue", "anthon", "Harmony", "Johnson"]

並且必須是一個數組..因為自動完成框架只適用於數組

const myobj = [
    {
      "name": "samuel",
      "surname": "anthony"
    },
    {
      "name": "Harmony",
      "surname": "Johnson"
    }
  ]

  const file = "json/user.json";

  fetch('file')
  .then(res => res.json())
  .then((data) =>{
      let i = 0;
      const val = Object.values(data[i]);
      if(i < data.length){
        i++;
        const all = Object.values(data[i]);
        console.log(all);
      }

      var input = document.getElementById("countries");
      var awesomplete = new Awesomplete(input, {
          minChars: 1,
          maxItems: 5,
          autoFirst: true
      });
      awesomplete.list = val;

      //wanted array of
      //["samuel", "anthon", "school"]
  })

要將myObj轉換為您想要的數組,您可以使用.flatMapObject.values如下所示:

 const myobj = [{ "name": "samuel", "surname": "anthony" }, { "name": "Harmony", "surname": "Johnson" } ]; const res = myobj.flatMap(Object.values); console.log(res);

但是,請注意。 flatMap並非在所有瀏覽器中都可用,因此它沒有最好的瀏覽器兼容性。

如果您無法使用.flatMap可以使用.reduce破壞任務作為一種替代方案:

 const myobj = [{ "name": "samuel", "surname": "anthony" }, { "name": "Harmony", "surname": "Johnson" } ]; const res = myobj.reduce((acc, {name, surname}) => [...acc, name, surname], []); console.log(res);

使用reduce

 const myobj = [ { "name": "samuel", "surname": "anthony" }, { "name": "Harmony", "surname": "Johnson" } ] console.log(myobj.reduce((acc,e)=>{acc.push(e.name);acc.push(e.surname);return acc},[]))

使用forEach

 const myobj = [ { "name": "samuel", "surname": "anthony" }, { "name": "Harmony", "surname": "Johnson" } ] var a=[]; myobj.forEach((e)=>{a.push(e.name);a.push(e.surname)}) console.log(a)

您可以使用...展開運算符push() Object.values(obj) 到想要的數組中

 const myobj = [ { "name": "samuel", "surname": "anthony" }, { "name": "Harmony", "surname": "Johnson" } ] let arr = [] myobj.forEach(obj=> arr.push(...Object.values(obj))); console.log(arr);

您可以使用Array.map() 方法

一個示例用例可能是:

const oldArr = [
    {
      "name": "Samuel",
      "surname": "anthony"
    },
    {
      "name": "Harmony",
      "surname": "Johnson"
    }
 ]

const newArr = oldArr.map(x => x.name) // ['Samuel', 'Harmony']

展平對象:

 const myobj = [{ "name": "samuel", "surname": "anthony" }, { "name": "Harmony", "surname": "Johnson" } ]; var flatten=myobj.reduce((arr, v)=> [...arr,...[v.name,v.surname]],[]); console.log(flatten);

暫無
暫無

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

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