Dav*_*vid 27 javascript object internet-explorer-11
我有以下对象数组:
Objs[0] = {Name : "ABC"};
Objs[1] = {Roll : 123}
Run Code Online (Sandbox Code Playgroud)
我正在努力使它如下:
Objs {
Name : "ABC",
Roll : 123
}
Run Code Online (Sandbox Code Playgroud)
我尝试使用以下代码制作它:
var Objs = [{
Name: "ABC"
}, {
Roll: 123
}];
console.log(
Object.assign.apply(null, [{}].concat(Objs)) // 1
)
or
console.log(
Object.assign({}, ...Objs) // 2
)
Run Code Online (Sandbox Code Playgroud)
问题是这在IE 11中不起作用.
我得到错误:
1的错误:无法获取未定义或空引用的属性'on'
2的错误:对象不支持属性或方法'assign'
关于如何在IE 11中合并对象的任何建议?
Neb*_*pic 45
您可以使用在IE 11中工作的jQuery方法$ .extend().
var object = {name: 'John', surname: 'Rowland'};
var newObject = $.extend({}, object);
newObject.age = '30';
console.log(object);
console.log(newObject)Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>Run Code Online (Sandbox Code Playgroud)
Nin*_*olz 35
IE11不支持Object.assign.
您可以迭代数组和键,并将值作为结果对象的新属性.
var objs = [{ Name: "ABC" }, { Roll: 123 }],
result = objs.reduce(function (r, o) {
Object.keys(o).forEach(function (k) {
r[k] = o[k];
});
return r;
}, {});
console.log(result);Run Code Online (Sandbox Code Playgroud)
小智 13
安装:
npm i -s babel-polyfill
Run Code Online (Sandbox Code Playgroud)
并在条目顶部index.js文件添加:
import 'babel-polyfill'
Run Code Online (Sandbox Code Playgroud)
这将解决Babel没有解决的一些问题.Object.assign就是其中之一.
这意味着您可以使用新的内置函数(如Promise或WeakMap),静态方法(如Array.from或Object.assign),实例方法(如Array.prototype.includes)和生成器函数(假设您使用的是再生器插件).为了做到这一点,polyfill添加到全局范围以及像String这样的本机原型.
最后,您应该决定要使用整个babel-polyfill(最小化约50kb)的天气,或者仅使用通过单个polyfill所需的天气,即.es6-承诺承诺.
我认为最好的做法是,如果在项目中使用lodash util库,则是lodash的assign方法,该方法对于所有浏览器(包括IE(至少是IE11))都与Object.prototype.assign相同:https:// lodash。 com / docs / 4.17.4#assign
如果尚未使用lodash,请考虑使用。它具有许多util函数,这些函数在JavaScript,TypeScript和NodeJS(由我测试过,但可能还支持其他JS连接技术)上的所有浏览器上均能正常工作。我个人将lodash包括到我所有与JavaScript相关的项目中
| 归档时间: |
|
| 查看次数: |
35969 次 |
| 最近记录: |