js操作对象(删除key,value)

有一个删除按钮,点一下,删除一个对象属性或者值

var obj = {a:'200',b:'2345',c:'1'}

期望:

{a:'200',b:'2345',c:'1'}
{a:'200',b:'2345',c:''}
{a:'200',b:'2345'}
{a:'200',b:'234'}
{a:'200',b:'23'}
{a:'200',b:'2'}
{a:'200',b:''}
{a:'200'}
...
阅读 14.6k
6 个回答
function unset(obj) {
    var key = Object.keys(obj).pop();
    if (key in obj) {
        if (obj[key] === "") delete obj[key];
        else obj[key] = obj[key].slice(0, -1);
    }
    return obj;
}
console.log(unset(obj));
    deleteKey(obj,key){
        delete obj[key]
    }
    deleteValue(obj,key){
        obj[key] = null//或者赋值为 题目里 你要的空字符串""
    }

你这个需求是不是异想天开,具体是什么需求场景能说一下吗?
再说了,对象的属性没有顺序的,你怎么判断我这次要删除哪个属性或者值。
建议描述一下你的应用场景

//思路就是把对象转二维数组,进行对后面的数组的value - 1,

    function del(obj) {

        let arr = [];
        let newObj = {};
        for (item in obj) {
            arr.push([item, obj[item]])
        }
        if (arr && arr.length > 0) {
            let value = arr[arr.length - 1][1];
            if (value.length > 0) {
                arr[arr.length - 1][1] = value.slice(0, value.length - 1);
            } else {
                arr.splice(arr.length - 1, 1)
            }

        }
        arr.forEach((o) => {
            newObj[o[0]] = o[1];
        })
        window.obj = newObj
        console.log(obj)
    }
    del(obj);
function backspace(target) {
  return JSON.parse(
    JSON.stringify(target).replace(/,?[^{,:]+:""(?=}$)|[^"](?="}$)/, "")
  );
}

console.log((obj = backspace(obj)));
console.log((obj = backspace(obj)));
console.log((obj = backspace(obj)));
console.log((obj = backspace(obj)));
console.log((obj = backspace(obj)));
console.log((obj = backspace(obj)));
console.log((obj = backspace(obj)));
console.log((obj = backspace(obj)));
console.log((obj = backspace(obj)));
console.log((obj = backspace(obj)));
console.log((obj = backspace(obj)));
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题