JSON解析拼接问题

jda*_*awg 4 javascript

我似乎无法解决为什么splice在这种情况下无法正常工作.

我已经读过无数堆栈溢出的拼接示例,我似乎无法看到问题.

此代码基本上应该从JSON数组中的第一个项目(并且仅)中删除索引14.

var product_variations = JSON.parse('[{"0":"","1":"","2":"","3":"0.0000","4":"","5":"0.00","6":"0.00","7":"1.00","8":"0","9":"false","10":"false","11":[],"12":"","13":"","14":"Red","15":"Small"}]');

product_variations[0].splice(14, 1); 
Run Code Online (Sandbox Code Playgroud)

idm*_*ean 5

它不起作用,因为它splice是数组上可用的方法,而不是对象.

这是一个对象:

{"0":"","1":"","2":"","3":"0.0000","4":"","5":"0.00","6":"0.00","7":"1.00","8":"0","9":"false","10":"false","11":[],"12":"","13":"","14":"Red","15":"Small"}
Run Code Online (Sandbox Code Playgroud)

实际上你得到一个错误:

TypeError:undefined不是函数(评估'product_variations [0] .splice(14,1)')

您可以delete改为使用或将其转换为数组:

delete product_variations[0]["14"]
Run Code Online (Sandbox Code Playgroud)

要将其转换为数组,您可以尝试:

function objectToArray(p){
    var keys = Object.keys(p);
    keys.sort(function(a, b) {
        return a - b;
    });

    var arr = [];
    for (var i = 0; i < keys.length; i++) {
        arr.push(p[keys[i]]);
    }
    return arr;
}

var product_variations = JSON.parse('[{"0":"","1":"","2":"","3":"0.0000","4":"","5":"0.00","6":"0.00","7":"1.00","8":"0","9":"false","10":"false","11":[],"12":"","13":"","14":"Red","15":"Small"}]');

var arr = objectToArray(product_variations[0]);

arr.splice(14, 1); 
Run Code Online (Sandbox Code Playgroud)