Javascript 如何在映射函数中传递对象?

Javascript 如何在映射函数中传递对象?,javascript,jquery,Javascript,Jquery,我有一个临时数组,如下所示: 10) [{…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}] 0: {name: "john", address: "a1", v1: 11.972646011733632, …} 1: {name: "Dave", address: "a2", v1: 11.972646011733632, …} 2: {name: "Sid", address: "a3", v1: 11.972646011733632, …}

我有一个临时数组,如下所示:

10) [{…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}]
0: {name: "john", address: "a1", v1: 11.972646011733632, …}
1: {name: "Dave", address: "a2", v1: 11.972646011733632, …}
2: {name: "Sid", address: "a3", v1: 11.972646011733632, …}
我有一个对象要检查字段是否需要格式化

obj = {
    name: [],
    address: [],
    v1: ['round', 'percentage'],
    v2: ['round', 'percentage'],
    year: []
};
我需要的是在临时循环中检查obj中的键是否存在四舍五入和百分比,然后将第一个四舍五入设置为2位小数,并添加“%”

我希望我的输出像:

0: {name: "john", address: "a1", v1: 11.97%, …}
1: {name: "Dave", address: "a2", v1: 16.47%, …}
2: {name: "Sid", address: "a3", v1: 11.37%, …}

您可以组合
map
reduce
方法返回新的对象数组,然后使用
switch
更改obj中每个数组字段的值

const data=[{name:“john”,address:“a1”,v1:11.972646011733632},
{姓名:“Dave”,地址:“a2”,v1:11.97264601733632},
{名称:“Sid”,地址:“a3”,v1:11.97264601733632}]
常量对象={
姓名:[],
地址:[],
v1:[‘四舍五入’、‘百分比’],
v2:[‘四舍五入’、‘百分比’],
年份:[]
};
const result=data.map(o=>{
返回Object.entries(o).reduce((r[k,v])=>{
if(obj[k]&&obj[k].长度){
obj[k].forEach(字段=>{
开关(现场){
案例“圆形”:
v=数学四舍五入(v*100)/100
打破
案例“百分比”:
v+='%'
打破
}
})
}
r[k]=v;
返回r
}, {})
})

console.log(result)
您可以组合
map
reduce
方法返回新的对象数组,然后使用
switch
更改obj中每个数组字段的值

const data=[{name:“john”,address:“a1”,v1:11.972646011733632},
{姓名:“Dave”,地址:“a2”,v1:11.97264601733632},
{名称:“Sid”,地址:“a3”,v1:11.97264601733632}]
常量对象={
姓名:[],
地址:[],
v1:[‘四舍五入’、‘百分比’],
v2:[‘四舍五入’、‘百分比’],
年份:[]
};
const result=data.map(o=>{
返回Object.entries(o).reduce((r[k,v])=>{
if(obj[k]&&obj[k].长度){
obj[k].forEach(字段=>{
开关(现场){
案例“圆形”:
v=数学四舍五入(v*100)/100
打破
案例“百分比”:
v+='%'
打破
}
})
}
r[k]=v;
返回r
}, {})
})
console.log(结果)
请尝试此代码

var obj = {0: {name: "john", address: "a1", v1: 11.972646011733632, v2: 32.35345132541},1: {name: "Dave", address: "a2", v1: 15.972646011733632, v2: 12.35345132541},2: {name: "Sid", address: "a3", v1: 22.972646011733632, v2: 42.35345132541}};
    var length = Object.keys(obj).length;
    for (var i = 0; i < length; i++) {
        obj[i].v1 = parseFloat(Math.round(obj[i].v1 * 100) / 100).toFixed(2) + ' %';
        obj[i].v2 = parseFloat(Math.round(obj[i].v2 * 100) / 100).toFixed(2) + ' %';
    }   
    console.log(obj);
var obj={0:{name:“john”,address:“a1”,v1:11.97264601733632,v2:32.35345132541},1:{name:“Dave”,address:“a2”,v1:15.97264601733632,v2:12.35345132541},2:{name:“Sid”,address:“a3”,v1:22.97264601733632,v2:42.35345132541};
var length=Object.keys(obj.length);
对于(变量i=0;i
享受

请尝试此代码

var obj = {0: {name: "john", address: "a1", v1: 11.972646011733632, v2: 32.35345132541},1: {name: "Dave", address: "a2", v1: 15.972646011733632, v2: 12.35345132541},2: {name: "Sid", address: "a3", v1: 22.972646011733632, v2: 42.35345132541}};
    var length = Object.keys(obj).length;
    for (var i = 0; i < length; i++) {
        obj[i].v1 = parseFloat(Math.round(obj[i].v1 * 100) / 100).toFixed(2) + ' %';
        obj[i].v2 = parseFloat(Math.round(obj[i].v2 * 100) / 100).toFixed(2) + ' %';
    }   
    console.log(obj);
var obj={0:{name:“john”,address:“a1”,v1:11.97264601733632,v2:32.35345132541},1:{name:“Dave”,address:“a2”,v1:15.97264601733632,v2:12.35345132541},2:{name:“Sid”,address:“a3”,v1:22.97264601733632,v2:42.35345132541};
var length=Object.keys(obj.length);
对于(变量i=0;i

享受

可以通过以下方式概括对象中某些键的格式

//接受函数数组,如[fn1,fn2]
//并返回一个函数:fn(arg)=>fn2(fn1(arg))
const compose=(函数=[(x)=>x])=>(arg)=>
函数.reduce((结果,fn)=>fn(结果,arg);
常数轮=(小数)=>(x)=>
parseFloat(x.toFixed(小数));
常数百分比=(x)=>x+'%';
常量大写名称=(x)=>
x、 slice(0,1).toUpperCase()+x.slice(1);
//格式化程序,键“v1”将四舍五入并生成一个百分比
常量格式化程序={
v1:[四舍五入(2),百分比],
姓名:[大写姓名],
};
console.log(
//资料
[
{姓名:'john',地址:'a1',v1:11.972646011733632},
].地图((
o、 //格式化格式化程序中存在的每个键
) =>
Object.entries(o).reduce(
(结果,[键,值]=>(
//如果未定义compose,它将返回x=>x函数
//所以值不会被格式化
(结果[key]=compose(格式化程序[key])(值)),
结果
),
{},
),
),

);您可以按以下方式概括对象中某些键的格式

//接受函数数组,如[fn1,fn2]
//并返回一个函数:fn(arg)=>fn2(fn1(arg))
const compose=(函数=[(x)=>x])=>(arg)=>
函数.reduce((结果,fn)=>fn(结果,arg);
常数轮=(小数)=>(x)=>
parseFloat(x.toFixed(小数));
常数百分比=(x)=>x+'%';
常量大写名称=(x)=>
x、 slice(0,1).toUpperCase()+x.slice(1);
//格式化程序,键“v1”将四舍五入并生成一个百分比
常量格式化程序={
v1:[四舍五入(2),百分比],
姓名:[大写姓名],
};
console.log(
//资料
[
{姓名:'john',地址:'a1',v1:11.972646011733632},
].地图((
o、 //格式化格式化程序中存在的每个键
) =>
Object.entries(o).reduce(
(结果,[键,值]=>(
//如果未定义compose,它将返回x=>x函数
//所以值不会被格式化
(结果[key]=compose(格式化程序[key])(值)),
结果
),
{},
),
),
);