2016-07-05 27 views
1

我必须将数组(名称和状态数组)映射到一个具有attrbiutes名称和状态的对象中。Javascript map 2 arrays into 1 Object

阵列名称:

["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浏览器..如果我添加这些行,移动浏览器不会显示任何内容..

那么是否有另一种方法来获得相同的结果?

+0

您是否尝试过使用匿名函数代替Arrow函数表达式,iOS Safari是否支持ES6? –

+0

像@simplesystems说的那样,[检查ES是个好主意?兼容性](https://kangax.github.io/compat-table/es6/)。 –

回答

5

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

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

的jsfiddle:https://jsfiddle.net/urbr49d3/

+0

这适用于我..thx! – simplesystems

+1

btw不需要绑定,使用thisArg。 'testArr = riskNamesArr.map(function(x,i){{name}:x,“state”:riskWorkflowStateArr [i]} },this);' –

+1

@NinaScholz非常感谢。 – Michael

4

Safari for iOS does not yet support arrow功能() => {}。使用正常功能function() {}代替:

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

More about arrow functions.

编辑:更改无效this参考。

+0

这导致Uncaught TypeError:无法读取属性'0'的未定义 – simplesystems

+0

@simplesystems查看我的编辑。在正常的函数中,'this'引用不一定指向周围块的'this'引用。在箭头函数中,它的确如此。 – Timo

+0

好吧,现在这个作品了!谢谢你们 – simplesystems

-3

添加这个头在服务器端POST请求的响应:

Cache-Control: no-cache 

我想这是一个缓存的问题,但不能完全肯定。如果它不起作用。请告诉我,我会尝试找到它不工作的另一个原因

+0

这是一个建议,一个可能的答案。我不明白为什么它应该得到'-1'。 downvotes与答案的质量有关,而不是如果它是你正在寻找或不寻找的答案。 –