将两个 JavaScript 数组映射成一个对象。

11
{"John", "Mary", "David"}

Array State:

{"California", "New York", "Texas"}
{"name":"John","state":"California"},{"name":"Mary","state":"New York"},{"name":"David","state":"Texas"}
 ["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浏览器上无法正常工作。如果我添加这些行,移动浏览器就什么也不显示。

那么是否有其他方法可以获得相同的结果?


你尝试过在箭头函数表达式的位置使用匿名函数吗?iOS Safari是否支持ES6? - David Thomas
就像@simplesystems所说的那样,检查此处的ES兼容性是一个好主意。 - David Gourde
3个回答

16

我认为这是箭头函数的问题 - 这是 ES6 的语法。尝试使用普通函数:

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

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


1
顺便提一下,不需要使用bind,可以使用thisArg。testArr = riskNamesArr.map( function(x, i){ return {"name": x, "state": riskWorkflowStateArr[i]} }, this); - Nina Scholz
1
@NinaScholz 非常感谢。 - Michael

9

iOS上的Safari 目前不支持箭头函数() => {}。请使用普通函数function() {}代替:

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

更多关于箭头函数的信息。

编辑:更正了无效的this引用。


这会导致一个未捕获的类型错误:无法读取未定义的属性'0'。 - simplesystems
@simplesystems 请看我的编辑。在普通函数中,this 引用不一定指向周围块的 this 引用。但在箭头函数中,它确实如此。 - TimoStaudinger

-3
在服务器端响应POST请求时,请添加此标头:
Cache-Control: no-cache

我猜测这是缓存问题,但并不完全确定。如果还是不行,请告诉我,我会尝试找到其他原因。


这只是一个建议,一个可能的答案。我不明白为什么它会被评为“-1”。负评与答案的质量有关,而不是它是否是你要寻找的答案。 - David Gourde

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接