JavaScript:如何从JavaScript对象中获取数字?

4
data = [ RowDataPacket { test: '12312311' },
    RowDataPacket { test: '12312312' },
    RowDataPacket { test: '12312313' } ]

我希望在Javascript中将此对象中的数字获取到并放入数组中。我已经尝试过使用.split(/(\d+)/);,但是在Chrome中出现了以下错误:Uncaught TypeError: data.split is not a function。如何提取这些数字呢?

2
看起来你在这里混淆了JavaScript对象和JSON。你手头已经有一个JS对象,而不是JSON。 - yunzen
那不是JSON,那是一组RowDataPackets数组。 - RemcoGerlich
1
数据.map(each => parseInt(each.test)) - tom10271
为了让split函数正常工作,data需要是一个字符串。但实际上,将对象转换为字符串再进行分割没有任何意义。 - khollenbeck
3个回答

6
你的尝试不会成功,因为.split()是一个字符串方法 - 它用于将字符串分割成数组。你已经有一个数组。JSON 在这里似乎是无关紧要的,因为你分享的内容不是 JSON。
你可以使用Array.map()来改变数组中每个成员。你想要获取每个成员的test值,并对其进行解析。

var data = [ { test: '12312311' }, { test: '12312312' }, { test: '12312313' } ];
var result = data.map(obj => parseInt(obj.test));
console.log(result);


4
您可以使用 map 方法与 解构赋值 结合使用,返回一个新数组。 + 可以用作强制类型转换运算符,将字符串值转换为数字。
data.map(({test}) => +test);

let data = [ { test: '12312311' }, { test: '12312312' }, { test: '12312313' } ],
    
r = data.map(({test}) => +test);

console.log(r);


0

这就像一个简单的forEach一样容易。但是首先你应该以某种方式忽略RowDataPacket,然后下面的代码应该可以工作。

var numbers = [];
data.forEach(function( item ) {
  numbers.push(parseInt(item.test));
});

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