我似乎无法解决为什么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)
它不起作用,因为它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)
归档时间: |
|
查看次数: |
1478 次 |
最近记录: |