鍍金池/ 問答/HTML/ JS 處理Json對象

JS 處理Json對象

有道JS題,如下:

[
    {'Num':'2'},
    {'Num':'4'},
    {'Num':'8'},
    {'Num':'9'},
    {'Num':'13'},
    {'Num':'15'},
    {'Num':'19'},
    {'Num':'23'},
]

要求:
Num的值在區(qū)間0~6之間,在json對象上加上鍵值對 'a':0;
Num的值在區(qū)間6~12之間,在json對象上加上鍵值對 'a':1;
Num的值在區(qū)間12~18之間,在json對象上加上鍵值對 'a':2;
Num的值在區(qū)間18~24之間,在json對象上加上鍵值對 'a':3;

結(jié)果這樣:

 [
    {'Num':'8','a':'1'},
    {'Num':'2','a':'0'},
    {'Num':'13','a':'2'},
    {'Num':'4','a':'0'},
    {'Num':'9','a':'1'},
    {'Num':'15','a':'2'},
    {'Num':'19','a':'3'},
    {'Num':'23','a':'3'}
]

因?yàn)樽罱罅孔鯦S的數(shù)據(jù)處理,看了一些JS題,上網(wǎng)請教下其他朋友的思路和方法。謝謝

回答
編輯回答
苦妄

map一下?

2017年10月31日 05:09
編輯回答
執(zhí)念

別人說Map一下沒說錯啊,另外json的屬性名是雙引號。拿走不謝

var obj = json.map(function (t) {
    var val = +t['Num'];
    t['"a"'] = Math.floor(val/6).toString();
    return t;
});
2017年4月24日 10:35
編輯回答
萌二代

這是,我個人覺得還是先對JSON進(jìn)行遍歷,針對不同的Num值,得到不同的a值,然后用字符串吧這些加起來,然后在調(diào)用JSON.parse()函數(shù)進(jìn)行字符串到j(luò)son的轉(zhuǎn)換。我簡單的寫了個小函數(shù),你可以參考下?。?/p>

    function jsonAdd(json) {
        var nArr=[];
        var ss='[';
        json.map((x)=>{
            var num=parseInt(x.Num);
            ss+='{"Num":'+num+","+'"a:":';
            if(num>0&&num<=6){
                ss+='0},';
            }else if(num>6&&num<=12){
                ss+='1},';
            }else if(num>12&&num<=18){
                ss+='2},';
            }else if(num>18&&num<=24){
                ss+='3},';
            }
        })
        ss = ss.substring(0, ss.length - 1);  
        ss+="]";
        return JSON.parse(ss);
    }

調(diào)用函數(shù),傳入原始數(shù)據(jù),返回一個修改后的數(shù)據(jù).

2017年9月11日 20:52
編輯回答
雨蝶
var json = '[{"Num":"2"},{"Num":"4"},{"Num":"8"},{"Num":"9"},{"Num":"13"},{"Num":"15"},{"Num":"19"},{"Num":"23"}]';
var obj = JSON.parse(json);
for(var o in obj)
{
    obj[o]['a'] = parseInt(obj[o]['Num'] / 6);
}
json = JSON.stringify(obj);
console.log(json)

ps:你這個不是json

圖片描述

2017年5月16日 17:03