Javascript将2个数组映射到1个对象

时间:2016-07-05 12:56:17

标签: javascript arrays object dictionary

我必须使用数组(名称和状态数组)并将它们映射到一个具有attrbiutes名称和状态的对象。

数组名称:

 ["Time", "Riskchanged", "Scope", "Risk4", "Test", "Test(2)"]

数组状态:

 ["In Bearbeitung", "Abgeschlossen", "In Bearbeitung", "Abgeschlossen", "Geplant", "In Bearbeitung"]

功能:

this.testArr = this.riskNamesArr.map( (x, i) => {
    return {"name": x, "state": this.riskWorkflowStateArr[i]}        
});

这适用于所有桌面浏览器,但遗憾的是不在我的iOS Safari浏览器上。如果我添加这些行,移动浏览器只显示任何内容..

那么有另一种方法可以获得相同的结果吗?

3 个答案:

答案 0 :(得分:11)

我认为这是箭头功能的问题 - 那就是ES6风格。尝试使用一个简单的函数:

testArr = riskNamesArr.map( function(x, i){
    return {"name": x, "state": riskWorkflowStateArr[i]}        
}.bind(this));

JSFiddle:https://jsfiddle.net/urbr49d3/

答案 1 :(得分:7)

Safari for iOS does not yet support箭头功能() => {}。请改为使用普通函数function() {}

var riskWorkflowStateArr = this.riskWorkflowStateArr;
this.testArr = this.riskNamesArr.map(function(x, i) {
    return {"name": x, "state": riskWorkflowStateArr[i]}        
});

More about arrow functions.

修改:更改了无效的this参考。

答案 2 :(得分:-4)

在服务器端添加此标头对POST请求的响应:

Cache-Control: no-cache

我认为这是一个缓存问题,但并不完全确定。如果它不起作用。请告诉我,我会试着找到另一个不起作用的原因