[英]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.