[英]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
轉換為您想要的數組,您可以使用.flatMap
和Object.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.