Javascript 遍历对象键并操纵键值
我有一个来自服务器响应的对象数组 阵列结构:Javascript 遍历对象键并操纵键值,javascript,arrays,ecmascript-6,javascript-objects,Javascript,Arrays,Ecmascript 6,Javascript Objects,我有一个来自服务器响应的对象数组 阵列结构: [ { col1: ["a", "b"], col2: ["c", "d"] }, { col1: ["e", "f"], col2: ["g", "h"] } ] 我希望所需的输出数组采用以下形式: [ { col1: "b", col2: "d" }, { col1: "f", col2: "h" } ] 基本上,我想将最初作为数组的objec
[
{
col1: ["a", "b"],
col2: ["c", "d"]
},
{
col1: ["e", "f"],
col2: ["g", "h"]
}
]
我希望所需的输出数组采用以下形式:
[
{
col1: "b",
col2: "d"
},
{
col1: "f",
col2: "h"
}
]
基本上,我想将最初作为数组的objectkeys值转换为单个值,该值将是objectkeys数组的第二个元素
我可以通过使用toString()
将对象键数组转换为逗号分隔的字符串,然后执行string.split(“,”[1]
来进行转换,但我无法遍历对象键
希望ES6中的输入使用map进行迭代以下代码应按照您的规范工作
var arr=[{col1:[“a”,“b”],col2:[“c”,“d”]},{col1:[“e”,“f”],col2:[“g”,“h”]}]
//[{col1:b,col2:d},{col1:f,col2:h}]
arr2=[];
arr.forEach(e=>{
设currObj={};
Object.keys(e).forEach(f=>{
currObj[f]=e[f][1]
})
arr2.推力(currObj)
})
控制台日志(arr2)
使用Array#reduce
和Object.keys
的可能解决方案。
var arr=[{col1:[“a”,“b”],col2:[“c”,“d”]},{col1:[“e”,“f”],col2:[“g”,“h”]},
res=arr.reduce(函数s,a){
var obj={};
对象。键(a)。映射(函数(c){
obj[c]=a[c][1];
})
s、 推(obj);
返回s;
}, []);
控制台日志(res)代码>您可以将和与具有所需键/值的新对象的内部映射结合使用
var data=[{col1:[“a”,“b”],col2:[“c”,“d”]},{col1:[“e”,“f”],col2:[“g”,“h”]},
结果=data.map(o=>Object.assign({},…Object.keys(o.map)(k=>({[k]:o[k][1]}));
控制台日志(结果)代码>
.as console wrapper{max height:100%!important;top:0;}
这可以通过使用简单的循环来实现,您尝试过什么吗?可能与我使用的es6重复,使用map进行循环。我尝试了双映射,但没有以优化的方式进行迭代。您能发布您到目前为止尝试的内容吗?键名是可变的,而不是固定的,因为它来自服务器响应。效果很好。坚持下去!谢谢这就是我要找的。工作起来很有魅力。