我有这样的数据:
var data = [{one:1}, {two:2}, {three:3}]
我想遍历此数据,并获取键的值。我正在寻找的结果是123。
我尝试过:
var result = [];
for(i=0; i < data.length; i++){
result.push(data[i]);
}
但是,它所要做的就是将对象推入变量数组'result'。
问题是,我如何获得数据IE 1、2和3的值?
答案 0 :(得分:2)
可以。
var data = [{one:1}, {two:2}, {three:3}]
var result = [];
// read all items of data.
data.forEach(function(item) {
// read all keys of item.
Object.keys(item).forEach(function(key) {
result.push(item[key]);
});
});
或ES6
const data = [{one:1}, {two:2}, {three:3}]
let result = [];
data.forEach(item => {
result = [...result, ...Object.values(item)];
});
答案 1 :(得分:2)
只需在某些浏览器(和nodejs 7)中添加它,就可以像这样使用Object.values()
var data = [{one:1}, {two:2}, {three:3}];
var values = data.map(o=>Object.values(o)[0]);
console.log(values);
答案 2 :(得分:1)
万一您的数据结构没有变化,也就是说,每个对象条目中只有一个键值对,请使用Array#map
遍历条目,然后调用{ {3}}与当前object
并使用[0]
来获取实际的密钥(例如one
,two
,three
)并使用键返回object
的值,然后您可以操纵需要result
的方式:
const data = [{one:1}, {two:2}, {three:3}];
const result = data.map(object => object[Object.keys(object)[0]]);
console.log(result);
console.log(result.join(','));
console.log(result.join(''));
var data = [{one:1}, {two:2}, {three:3}];
var result = data.map(function (object) {
return object[Object.keys(object)[0]]
});
console.log(result);
console.log(result.join(','));
console.log(result.join(''));
答案 3 :(得分:0)
像这样从对象获取值:
var result = [];
data.foreach((item) => {
item.keys().foreach( (key) => {
result.push(item[key]);
});
});
当数组中已经有数据时,您只需完成
var dataString = result.join('');
此函数将数组中的所有值合并为一个字符串,并以给定的字符串作为分隔符。传递空白字符串使其不使用分隔符。
或者,您可以执行以下操作:
var result = "";
data.foreach((item) => {
item.keys().foreach( (key) => {
result += item[key];
});
});
因为这将直接连接字符串。
答案 4 :(得分:0)
如何使用reduce
,Object.values
和spread
?
const data = [{one:1}, {two:2}, {three:3}]
const flatMapValues = arr => {
return arr.reduce((collection, item)=> collection = [...collection, ...Object.values(item)], [])
}
这会更好地扩展,因为它将所有值转换为一个数组。
const data = [{one:1, four: 4}, {two:2, five:5}, {three:3, six: 6}]
const flatMapValues = arr => {
return arr
.reduce((collection, item)=> collection = [...collection, ...Object.values(item)], [])
.sort((a, b) => a > b)
}