我想知道如何通过拆分值将数组转换为对象?

var obj = {
    id: '',
    val: ''
}


我的意思是-如果我有一个像

["abc12", "abc1", "def12", "abc454"]

我怎么能关闭前三个值-所以最终像一个对象一样:

{id: 'abc', val: 12}, {id: 'abc', val: 1} ...

最佳答案

一种解决方案是使用函数将数组(如herby所述)映射,该函数将数组的元素转换为所需形式的对象。
在这种情况下,id用第一个数字前面的所有字符表示,而val表示字符串后面的数字:

source.map(function(x) {
    return {
        id: x.replace(/(^.*?)\d+$/,'$1'),
        val: parseInt(x.replace(/^.*?(\d+)$/,'$1'),10)
    };
});


Here's a working demo

附:您可能要小心并检查map原型链中是否存在Array方法,因为较旧的浏览器可能未实现此方法。以下链接说明了如何解决此浏览器不兼容的问题:http://www.tutorialspoint.com/javascript/array_map.htm

关于javascript - 将数组值拆分为对象?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10860629/

10-12 04:21