克隆动态对象并将其值重置(空)

时间:2018-10-03 16:13:26

标签: javascript json vuejs2

将数据对象设置为:

var data = [{id:1, name:'t1'},{id:2, name:'t2'},{id:1, name:'t3'}]

这可以在数组中包含不同的JSON对象。

var data = [{value:1, key:'t1'}]

如何克隆JSON对象并重置其值。 例如,{id:1,名称:'t1'}到{id:0,名称:''}和{value:1,键:'t1'}到{value:0,键:''}


我试图这样做:

function getNew()
{
return {id:0, name:''};   //here JSON can be vary.

}

但是问题是,它的static reset,这里的JSON对象可以改变。 我只需要获取上面的内联“数据”集合的空JSON对象。

3 个答案:

答案 0 :(得分:0)

有些只是列出数组中的每个项目。如果您想要array1的结果,arr1.forEach会返回1, 2, 3, 4, 5数组中的每一项,直到结束为止。

包含的意思是,如果arr2.includes(1)我们看到array2包含项1,那么我使用!arr2.includes(item)来查看它是否不包含项。

最后一个示例,获取array2中的最后一个结果。然后将其更改为该值+ 1。

我给你很多伙伴的例子。

var arr1 = [1, 2, 3, 4, 5]
        var arr2 = [1, 2, 3, 4, 6]
        var final = []
        arr1.forEach(item => {
            if (!arr2.includes(item)) {
                final.push(item)
                final.push({new: item+2})
                console.log('A: Array 2 does not have', item)
            }
        })
        console.log("New array", final)
        // Or
        function check(a, b, callback) {
            var x = []
            a.forEach(item => {
            if (!b.includes(item)) {
                x.push(item)
                x.push({new: item+2}) 
                console.log('B: Array 2 does not have', item)
                }
                
            })
           callback(x)
        }
        check(arr1, arr2, function(response) {
          console.log("Example two new array", response)
        })
        // Or last
        var y = []
        for (var i = 0; i < arr2.length; i++) {
           if (i == arr2.length-1) {
              y.push({"new": arr2[i]+1})
           }
        }
        console.log("C: Last", y)
        // Another
        var data = [{one: "1"}]
        function last(x, callback) {
           var finalz = x[x.length - 1]; // Change value
           callback(finalz)
        }
        last(data, function(response) {
          var finalb = []
           for (property in response) {
              finalb.push({"new_last_example": property+1000})
           }
           console.log(finalb)
        })

答案 1 :(得分:0)

这将为您提供最后一个值:

var data = [{id:1, name:'t1'},{id:2, name:'t2'},{id:1, name:'t3'}];
var newData = data.pop();

答案 2 :(得分:0)

已经提供了.pop答案,所以我提出了另外两种选择:

更新:即使数据容易更改,这也会重置您的密钥。

var data = [{
    value: 1,
    key: 't1',
    'obj': {
      name: 1
    },
    'arr': [1, 2, 3, 4, 5],
    'test': "undefined"
  },
  {
    value: 333,
    'arr': 'no arr',
    'some': "undefined"
  }
];

var resetJSON = function(arr) {

  var defaultTypes = {
    'string': '',
    'number': 0,
    'object': {},
    'array': [],
    'function': function() {},
    'boolean': false
  };

  var detectType = function(value) {

    // object | array
    // function
    // string
    // number
    // boolean
    // undefined ( as string )
    // null

    try {

      let type = "";

      if (typeof value === "string") {

        type = "string";

      }

      if (value === void 0) {

        type = "undefined";

      }

      if (typeof value === "number") {

        type = "number";

      }

      if (typeof value === "boolean") {

        type = "boolean";

      }

      if (typeof value === "object" && typeof(value.length) === "number") {

        type = 'array';

      }
      if (typeof value === "object" && typeof(value.length) === "undefined") {

        type = 'object';

      }

      return type;

    } catch (e) {

      return "null";

    }

  }

  arr = arr.map(function(item) {

    for (let i in item) {

      item[i] = defaultTypes[detectType(item[i])];

    }

    return item;

  });

  return arr;

}

console.log('Input data:');
console.log('----------');
console.log(data);
console.log('----------');
console.log('Output data:');
console.log('----------');
console.log(resetJSON(data));

1。目标最后一个索引:

var data = [{
  id: 1,
  name: 't1'
}, {
  id: 2,
  name: 't2'
}, {
  id: 1,
  name: 't3'
}];

data = data[data.length - 1];

console.log(data);

2。使用.reduce

缩小数组

var data = [{
  id: 1,
  name: 't1'
}, {
  id: 2,
  name: 't2'
}, {
  id: 1,
  name: 't3'
}].reduce((a, i) => i);

console.log(data);