const data = [{
id: 1,
index: 1,
value: 50,
}, {
id: 1,
index: 2,
value: 20
},
{
id: 10,
index: 1,
value: 30,
},
{
id: 12,
index: 1,
value: 45,
}
]
const string= "sum(<id:1> * <id:10>) + <id:12>";
fun(string,data){ }
console.log(fun(string,data)) // 2145
50*30+20*30+45
let valeu=data[0].value*data[2].value+data[1].value*value+data[2].value+value+data[3].value
你循环一下 不就好了 。判断 id 呗
const data = [{
id: 1,
index: 1,
value: 50,
}, {
id: 1,
index: 2,
value: 20
},
{
id: 10,
index: 1,
value: 30,
},
{
id: 12,
index: 1,
value: 45,
}
];
let v=sumId(data,[1,10,12]);
console.log(v)
function sumId(arr,ids){
let sum=0;
arr.map((item)=>{
if(ids.indexOf(item.id&&item.id)>-1){
if(item.value) sum+=Number(item.value);
}
})
return sum;
}
<script type="text/javascript">
const data = [{
id: 1,
index: 1,
value: 50,
}, {
id: 2,
index: 2,
value: 20
},
{
id: 10,
index: 1,
value: 30,
},
{
id: 12,
index: 1,
value: 45,
}
]
const string1 = "sum(<id:1> * <id:10>) + <id:12>";
function fun(string1, data) {
var string2 = string1.split('id:')
const arr = []
for(i=0;i<string2.length;i++){
if(string2[i].indexOf('>')>-1){
const index = string2[i].indexOf('>')
arr.push(Number(string2[i].substring(0,index)))
}
}
let sum=0;
data.map((item)=>{
if(arr.indexOf(item.id)>-1){
sum+=item.value
}
})
return sum
}
console.log(fun(string1, data))
</script>