Javascript Object.values()的替代版本

Javascript Object.values()的替代版本,javascript,internet-explorer,browser,ecmascript-6,Javascript,Internet Explorer,Browser,Ecmascript 6,我正在寻找Object.values()函数的替代版本。 因为Internet Explorer不支持此功能 执行以下示例代码时: var obj = { foo: 'bar', baz: 42 }; console.log(Object.values(obj)); // ['bar', 42] 它在Firefox和Chrome中都能工作,但在IE11中会抛出以下错误: 对象不支持属性或方法“值” 在这里您可以测试它: 那么,什么是快速解决方案呢?您可以使用Object.keys()获取一组键

我正在寻找
Object.values()
函数的替代版本。
因为Internet Explorer不支持此功能

执行以下示例代码时:

var obj = { foo: 'bar', baz: 42 };
console.log(Object.values(obj)); // ['bar', 42]
它在Firefox和Chrome中都能工作,但在IE11中会抛出以下错误:

对象不支持属性或方法“值”

在这里您可以测试它:


那么,什么是快速解决方案呢?

您可以使用
Object.keys()
获取一组键,然后使用
map()
获取值

var obj={foo:'bar',baz:42};
var values=Object.keys(obj).map(函数(e){
返回对象[e]
})

console.log(值)
您可以使用polyfill:

const valuesPolyfill=函数值(对象){
返回Object.keys(Object.map)(key=>Object[key]);
};
常量值=Object.values | | valuesPolyfill;
log(值({a:1,b:2,c:3}))由于对象是(并非如此)最新的实现,如果您想支持所有浏览器(即IE8及以下),则需要创建自己的函数:

function objectValues(obj) {
    var res = [];
    for (var i in obj) {
        if (Object.prototype.hasOwnProperty.call(obj, i)) {
            res.push(obj[i]);
        }
    }
    return res;
}
PS:刚刚注意到了
ecmascript-6
标签。顺便说一句,我把这个答案放在这里,以防万一有人需要它。

var x={姓名:“约翰”,年龄:30岁,城市:“班加罗尔”};
Object.prototype.values=函数(obj){
var-res=[];
用于(obj中的var i){
if(对象为自有财产(i)){
res.push(obj[i]);
}
}
返回res;
};
document.getElementById(“tag”).innerHTML=Object.values(x)

我知道这是一个老话题。我在玩arround,只想添加另一个实现。 它只是地图版本,地图本身使用reduce实现:

let obj={foo:'bar',baz:42};
const valueArray=Object.keys(obj).reduce((acc,key)=>{
acc.push(obj[键]);
返回acc;
}, []);
log(valueArray)Object.values()是ES8(2017年6月)规范的一部分。使用Cordova,我意识到Android 5.0 Webview不支持它。因此,我执行了以下操作,仅在不支持该功能时创建polyfill函数:

if (!Object.values) Object.values = o=>Object.keys(o).map(k=>o[k]);
对于使用的用户,您可以使用
获取对象值。\value

var obj = { foo: 'bar', baz: 42 };
console.log(_.values(obj)); // ['bar', 42]
如果您已经在使用(例如,通过使用Angular),则只需导入相应的多边形填充:

   import 'core-js/es7/object';

由于我没有找到满足我需求的答案:

var obj={foo:'bar',baz:42};
console.log(obj[Object.keys(obj)[0]])//bar

console.log(obj[Object.keys(obj)[1]])//42
您可以使用Object.keys()获取密钥数组。这也适用于IE。获取值完全不需要Object.values(),因为我们可以使用从Object.keys()获取的键来获取值,如下所示:

var obj = { foo: 'bar', baz: 42 };
var keyArray = Object.keys(obj);
for(var i = 0; i < keyArray.length; i++)
    console.log(obj[keyArray[i]]); 
var obj={foo:'bar',baz:42};
var keyArray=Object.keys(obj);
对于(var i=0;i
最好的方法是用ramda的values方法替换它:

import*as R从'ramda';
const obj={foo:'bar',test:10};

console.log(R.values(obj))/['bar',10]
谢谢!对于angular 5代码,我更改了
objectValues=Object.values
to
objectValues=((obj)=>{return Object.keys(obj.map)(e=>obj[e]);})
@Jeff为什么不看看angular8 polyfill.ts:
导入'core js/es/object/values'这不是一个原型方法。不是我的答案friend@fluidguid:谢谢你的评论,这是我的第一个答案,我必须学习。为什么?我认为问题是在IE中获取一个对象的值。因此,用简单的“for”我就有了它们。怎么了?根据您使用的Angular版本的不同,您可能需要更改导入:导入'core js/es/object';你真的相信这是一个很好的解决对象。值????