消息关闭
    暂无新消息!

关于数组的循环遍历问题

问题作者 : Borne2017-06-20发布
[{
    id: '1',
    name: '小王',
    desc: '小王描述'
}, {
    id: '2',
    name: '小强',
    desc: '小强描述'
}, {
    id: '6',
    name: '小红',
    desc: '小红描述'
}, {
    id: '9',
    name: '小东',
    desc: '小东描述'
}]

这是后台传回来的数据,怎么才能用for循环把里面的id变成数字呀?不懂怎么写,好尴尬


6个回答

︿ 1
var result = arr.map(item => {item.id = parseInt(item.id); return item;});

不过因为对象引用类型, 其实原数组arr里的id也为数值了

︿ 1

关键点是把字符串转成数值吧,parseInt或者Number都可以转。或者说直接让后台传数值类型。疑问:这是从后端获取的数据,一般都是要渲染到页面上的,为什么还要转成数值呢?

︿ 1

先说思路:
1、首先遍历数组
2、遍历对象
3、增加属性键值对,删除旧的键值对

下面代码:

        var jsonData = [{
            id: '1',
            name: '小王',
            desc: '小王描述'
        }, {
            id: '2',
            name: '小强',
            desc: '小强描述'
        }, {
            id: '6',
            name: '小红',
            desc: '小红描述'
        }, {
            id: '9',
            name: '小东',
            desc: '小东描述'
        }];
        var i = 0;
        for (; i < jsonData.length; i++) {
            for (var name in jsonData[i]) {
                if (name === 'id') {
                    jsonData[i][i] = jsonData[i][name];
                    delete jsonData[i][name];
                }
            }
        }
︿ 0

这样

function change(items){
    items= items|| [];
    for( var i = 0,item; item = items[i++]; ){
        item.id *= 1;
    }
    return items;
}

var result = change(/*你需要弄的*/);
︿ 0
//方法一
for(var i=0,len=arr.length;i<len;i++){
arr[i].id=parseInt(arr[i].id)
}
//方法二
arr.map(function(item){return {desc:item.desc,id:parseInt(item.id),name:item.name}})
//es6写法
arr.map(item=>{{desc:item.desc,id:parseInt(item.id),name:item.name}})