Javascript如何将json对象中的数据从ES6中的键转换为单个数组
我从API获得的数据如下:Javascript如何将json对象中的数据从ES6中的键转换为单个数组,javascript,vue.js,ecmascript-6,Javascript,Vue.js,Ecmascript 6,我从API获得的数据如下: { "lclWarehouseId":11, "name":"asdasd", "country":{ "id":1, "name":"Indonesia" }, "city":{ "id":1, "countryId":1, "name":"Jakarta" }, "address":"asdasd", "phone":"+62123123", "
{
"lclWarehouseId":11,
"name":"asdasd",
"country":{
"id":1,
"name":"Indonesia"
},
"city":{
"id":1,
"countryId":1,
"name":"Jakarta"
},
"address":"asdasd",
"phone":"+62123123",
"fax":"+62123123",
"monday":{
"isOpen":true,
"start":"0000-01-01T14:43:20+07:00",
"end":"0000-01-01T15:43:23+07:00"
},
"tuesday":{
"isOpen":false,
"start":"0000-01-01T00:00:00Z",
"end":"0000-01-01T00:00:00Z"
},
"wednesday":{
"isOpen":false,
"start":"0000-01-01T00:00:00Z",
"end":"0000-01-01T00:00:00Z"
},
"thursday":{
"isOpen":false,
"start":"0000-01-01T00:00:00Z",
"end":"0000-01-01T00:00:00Z"
},
"friday":{
"isOpen":false,
"start":"0000-01-01T00:00:00Z",
"end":"0000-01-01T00:00:00Z"
},
"saturday":{
"isOpen":false,
"start":"0000-01-01T00:00:00Z",
"end":"0000-01-01T00:00:00Z"
},
"sunday":{
"isOpen":false,
"start":"0000-01-01T00:00:00Z",
"end":"0000-01-01T00:00:00Z"
}
}
我想获取这几天(周一至周日)的所有密钥,并将它们转换为单个数组,如下所示:
[
{
"isOpen":true,
"start":"0000-01-01T14:43:20+07:00",
"end":"0000-01-01T14:43:20+07:00",
},
{
"isOpen":true,
"start":"0000-01-01T14:43:20+07:00",
"end":"0000-01-01T14:43:20+07:00",
},
{
"isOpen":true,
"start":"0000-01-01T14:43:20+07:00",
"end":"0000-01-01T14:43:20+07:00",
},
{
"isOpen":true,
"start":"0000-01-01T14:43:20+07:00",
"end":"0000-01-01T14:43:20+07:00",
},
{
"isOpen":true,
"start":"0000-01-01T14:43:20+07:00",
"end":"0000-01-01T14:43:20+07:00",
},
{
"isOpen":true,
"start":"0000-01-01T14:43:20+07:00",
"end":"0000-01-01T14:43:20+07:00",
},
]
是否可以在ES6中执行此操作?谢谢:这可能会对您有所帮助
var数组={
“lclWarehouseId”:11,
“名称”:“asdasd”,
“国家”:{
“id”:1,
“名称”:“印度尼西亚”
},
“城市”:{
“id”:1,
“countryId”:1,
“名称”:“雅加达”
},
“地址”:“asdasd”,
“电话”:“+62123123”,
“传真”:“+62123123”,
“星期一”:{
是的,
“开始”:“0000-01-01T14:43:20+07:00”,
“结束”:“0000-01-01T15:43:23+07:00”
},
“星期二”:
“isOpen”:假,
“开始”:“0000-01-01T00:00:00Z”,
“结束”:“0000-01-01T00:00:00Z”
},
“星期三”:
“isOpen”:假,
“开始”:“0000-01-01T00:00:00Z”,
“结束”:“0000-01-01T00:00:00Z”
},
“星期四”:
“isOpen”:假,
“开始”:“0000-01-01T00:00:00Z”,
“结束”:“0000-01-01T00:00:00Z”
},
“星期五”:{
“isOpen”:假,
“开始”:“0000-01-01T00:00:00Z”,
“结束”:“0000-01-01T00:00:00Z”
},
“星期六”:{
“isOpen”:假,
“开始”:“0000-01-01T00:00:00Z”,
“结束”:“0000-01-01T00:00:00Z”
},
“星期日”:{
“isOpen”:假,
“开始”:“0000-01-01T00:00:00Z”,
“结束”:“0000-01-01T00:00:00Z”
}
};
常数{星期一、星期二、星期三、星期四、星期五、星期六、星期日}=数组;
log([星期一、星期二、星期三、星期四、星期五、星期六、星期日])
我不知道为什么您需要ES6来完成此任务。
如果在名为resp的json中有响应
你可以简单地写
[resp.monday, resp.tuesday, ... resp.sunday]
这将提供所需的数组这对我来说很有用-使用一些ES6魔法
var data = { // your data
}
// Extract all values from JSON into an array
var arrAsKeys = Object.values(data)
// The values belonging to days will have data.start as a property
var requiredData = arrAsKeys.filter(day => day.hasOwnProperty('start'))
console.log(requiredData)
如果您需要动态地执行此操作
Object.values(array).filter(value => typeof value === 'object' && value["start"]);
ES6路
您也可以使用Object.values
,但它不是ES6的一部分,它包含在ES8第8版中
让a={
“lclWarehouseId”:11,
“名称”:“asdasd”,
“国家”:{
“id”:1,
“名称”:“印度尼西亚”
},
“城市”:{
“id”:1,
“countryId”:1,
“名称”:“雅加达”
},
“地址”:“asdasd”,
“电话”:“+62123123”,
“传真”:“+62123123”,
“星期一”:{
是的,
“开始”:“0000-01-01T14:43:20+07:00”,
“结束”:“0000-01-01T15:43:23+07:00”
},
“星期二”:
“isOpen”:假,
“开始”:“0000-01-01T00:00:00Z”,
“结束”:“0000-01-01T00:00:00Z”
},
“星期三”:
“isOpen”:假,
“开始”:“0000-01-01T00:00:00Z”,
“结束”:“0000-01-01T00:00:00Z”
},
“星期四”:
“isOpen”:假,
“开始”:“0000-01-01T00:00:00Z”,
“结束”:“0000-01-01T00:00:00Z”
},
“星期五”:{
“isOpen”:假,
“开始”:“0000-01-01T00:00:00Z”,
“结束”:“0000-01-01T00:00:00Z”
},
“星期六”:{
“isOpen”:假,
“开始”:“0000-01-01T00:00:00Z”,
“结束”:“0000-01-01T00:00:00Z”
},
“星期日”:{
“isOpen”:假,
“开始”:“0000-01-01T00:00:00Z”,
“结束”:“0000-01-01T00:00:00Z”
}
}
施工天数=[“周一”、“周二”、“周三”、“周四”、“周五”、“周六”、“周日”]
设arr=[]
Object.keys(a).forEach(key=>{
如果(天,包括(关键)){
arr.push(一个[键])
}
})
console.log(arr)
首先,从对象中选择相关键(带值),然后将其转换为所需的数组
const对象={
“lclWarehouseId”:11,
“名称”:“asdasd”,
“国家”:{
“id”:1,
“名称”:“印度尼西亚”
},
“城市”:{
“id”:1,
“countryId”:1,
“名称”:“雅加达”
},
“地址”:“asdasd”,
“电话”:“+62123123”,
“传真”:“+62123123”,
“星期一”:{
是的,
“开始”:“0000-01-01T14:43:20+07:00”,
“结束”:“0000-01-01T15:43:23+07:00”
},
“星期二”:{
“isOpen”:假,
“开始”:“0000-01-01T00:00:00Z”,
“结束”:“0000-01-01T00:00:00Z”
},
“星期三”:{
“isOpen”:假,
“开始”:“0000-01-01T00:00:00Z”,
“结束”:“0000-01-01T00:00:00Z”
},
“星期四”:{
“isOpen”:假,
“开始”:“0000-01-01T00:00:00Z”,
“结束”:“0000-01-01T00:00:00Z”
},
“星期五”:{
“isOpen”:假,
“开始”:“0000-01-01T00:00:00Z”,
“结束”:“0000-01-01T00:00:00Z”
},
“星期六”:{
“isOpen”:假,
“开始”:“0000-01-01T00:00:00Z”,
“结束”:“0000-01-01T00:00:00Z”
},
“星期日”:{
“isOpen”:假,
“开始”:“0000-01-01T00:00:00Z”,
“结束”:“0000-01-01T00:00:00Z”
}
};
常量天数=[“周一”、“周二”、“周三”、“周四”、“周五”、“周六”、“周日”];
常量拾取=函数(对象,允许键){
const newObject={};
allowedKeys.forEach((键)=>{
if(输入对象){
newObject[key]=对象[key];
}
});
返回newObject;
};
常量子集=拾取(对象,天);
const result=Object.keys(subset.map)((天)=>subset[day]);
控制台日志(结果)代码>