Object.values()
기능 의 대체 버전을 찾고 있습니다.
으로 여기에 설명 된 기능은 인터넷 익스플로러에서 지원되지 않습니다.
다음 예제 코드를 실행할 때 :
var obj = { foo: 'bar', baz: 42 };
console.log(Object.values(obj)); // ['bar', 42]
Firefox와 Chrome 모두에서 작동하지만 IE11에서 다음 오류가 발생합니다.
개체가 속성 또는 메서드 “값”을 지원하지 않습니다.
여기서 테스트 할 수 있습니다 : Fiddle .
그렇다면 빠른 수정은 무엇입니까?
답변
키 배열 을 얻은 Object.keys()
다음 map()
값을 가져 오는 데 사용할 수 있습니다.
var obj = { foo: 'bar', baz: 42 };
var values = Object.keys(obj).map(function(e) {
return obj[e]
})
console.log(values)
ES6에서는 화살표 기능을 사용하여 한 줄로 작성할 수 있습니다.
var values = Object.keys(obj).map(e => obj[e])
답변
Object.values ()는 ES8 (2017 년 6 월) 사양의 일부입니다. Cordova를 사용하여 Android 5.0 Webview가 지원하지 않는다는 것을 깨달았습니다. 그래서 다음을 수행하여 기능이 지원되지 않는 경우에만 polyfill 함수를 생성했습니다.
if (!Object.values) Object.values = o=>Object.keys(o).map(k=>o[k]);
답변
Object는 ( 그렇지 않은 ) 최근 구현 이므로 모든 브라우저 (AKA IE8 이하) 를 지원 하려면 고유 한 함수를 만들어야합니다.
function objectValues(obj) {
var res = [];
for (var i in obj) {
if (Object.prototype.hasOwnProperty.call(obj, i)) {
res.push(obj[i]);
}
}
return res;
}
추신 : 방금 ecmascript-6
태그를 발견했습니다 . Btw 누군가가 필요할 경우를 대비 하여이 답변을 여기에 보관합니다.
답변
답변
polyfill을 사용할 수 있습니다.
const valuesPolyfill = function values (object) {
return Object.keys(object).map(key => object[key]);
};
const values = Object.values || valuesPolyfill;
console.log(values({ a: 1, b: 2, c: 3 }));
답변
UnderscoreJS를 사용하는 사람들의 경우 다음을 사용하여 객체 값을 가져올 수 있습니다 _.values
.
var obj = { foo: 'bar', baz: 42 };
console.log(_.values(obj)); // ['bar', 42]
답변
var x = {Name: 'John', Age: 30, City: 'Bangalore'};
Object.prototype.values = function(obj) {
var res = [];
for (var i in obj) {
if (obj.hasOwnProperty(i)) {
res.push(obj[i]);
}
}
return res;
};
document.getElementById("tag").innerHTML = Object.values(x)
<p id="tag"></p>