我正在尝试转换对象列表中给定键的所有元素。具体更改是将通用object
转换为具有相同值的Long
对象。
输入:
[obj1, obj2, obj3, ...]
每个对象的位置如下:
{
key1: value1, // value1 is an object
key2: value2
}
所以这里的目标是获得一个非常相似的数组,但key1
从object
转换为long
对象,在我的例子中加1。
输出:
[obj1, obj2, obj3]
每个对象的位置:
{
key1: value1, // value1 is now a Long object
key2: value2
}
我尝试在数组上进行映射,然后遍布对象条目,但没有成功。
任何帮助都将受到高度赞赏。
答案 0 :(得分:1)
除非您想再创建一个新数组,否则您不需要在此处进行映射。简单循环就足够了,只需更新key1
或每个对象:
[obj1, obj2, obj3].forEach(obj => {
obj.key1 = obj.key1 + 1
})
答案 1 :(得分:0)
由于数组包含对象 - 对对象的任何修改都反映了传递的实际输入。您需要复制对象并执行逻辑。
你的逻辑,
var input = [obj1, obj2, obj3];
var output = input.map(function(obj){
obj.key1 = obj.key1 + 1;
return obj;
});
console.log(input[0]===output[0]); //true
<强>解决方案:强>
var output = input.map(function(obj){
var _objCopy = Object.assign({}, obj);
_objCopy.key1 = _objCopy.key1 + 1;
return _objCopy;
});
console.log(input[0]===output[0]); //false
答案 2 :(得分:0)
如何动态地对任何对象es6方式的第一个键
const myObject0 = {
'foo1': { name: 'myNam1' },
'foo2': { name: 'myNam2' }
};
const myObject1 = {
'yo': { name: 'myNam1' },
'boh': { name: 'myNam2' }
};
[myObject0, myObject1].forEach(obj => {
let getFirstKey = Object.keys(obj)[0];
getFirstKey = getFirstKey + 1;
console.log(getFirstKey);
});
答案 3 :(得分:0)
感谢所有答案的人。
我最终得到了以下内容:
给出输入
[
{
key1: value1, // value1 is an object
key2: value2
},
{
key1: value1, // value1 is also an object
key2: value2
}
]
<强>解决方案:强> 我结束了,
const testvar = [obj1, obj2, obj3].map((obj) => {
return {
...obj,
key1: new Long.fromValue(obj.key1)
}
});
console.log(testvar);
给出输出
[
{
key1: value1, // value1 is now a Long object
key2: value2
},
{
key1: value1, // value1 is also now a Long object
key2: value2
}
]