根据值将x数据量推送到对象

时间:2017-04-19 08:55:05

标签: javascript jquery typescript

我有一个能够计算某些东西并返回值的函数。

var c = containsObject("index", x);

让我们说C = 2;

然后我希望它能做到这样的事情:

data.push({
    "date": getdate.toString(),
    "value": x["Index"],
    "value2": x["Index2"]
})

如果C = 8,那么就像:

data.push({
    "date": getdate.toString(),
    "value": x["Index"],
    "value2": x["Index2"],
    "value3": x["Index3"],
    "value4": x["Index4"],
    "value5": x["Index5"],
    "value6": x["Index6"],
    "value7": x["Index7"],
    "value8": x["Index8"]
})

x是我从ajax调用中获取的数据数组

最好的办法是什么?

3 个答案:

答案 0 :(得分:0)

对属性使用string-key语法:

var _object={};
for(let i = 0;i<C;i++){
  let Cstr=C.toString();
  _object["value"+Cstr]=x["index"+Cstr];
}
data.push(_object);

答案 1 :(得分:0)

您可以使用括号表示法来执行此操作。

const c = 3;
const object = {};
for (let i = 1; i <= c; i++) {
    object['value' + i] = x['index' + i];
}

答案 2 :(得分:0)

由于您已使用TypeScript对此进行了标记,因此请尝试使用索引签名对类型进行批注,以消除编译时错误。

尝试这样的事情:

let data: Array<any>;
let c = 8;

let x: {
    [key: string]: string
};

let obj: {
    [key: string]: string
} = {
        "date": getdate.toString()
    };

for (let i = 0; i < c; i++) {
    obj["value" + c.toString()] = x["index" + c.toString()];
}