json对象键正在被添加,即使数组有该键

json object key is getting added even if array has the key

本文关键字:数组 添加 对象 json      更新时间:2023-09-26

我正在循环遍历一个数组,并检查第二个数组是否有该名称的键。若并没有,那个么将这个当前名称作为关键字添加到第二个数组中。我检查了hasOwnPropertyin,但在这两种情况下,键都被添加到第二个数组中,尽管已经存在该名称的键。如果密钥已经存在,如何阻止添加?

function(){
    var _arraySource = ['Tea', 'Coffe', 'Banana', 'Orange', 'Tea'];
    var _jsonArray = [];
    for(var i = 0, j = _arraySource.length; i<j; i++){
        if(_jsonArray.hasOwnProperty(_arraySource[i])){
            //Do nothing
        }
        else{
          var _key =_arraySource[i];
          var myObj = {};
          myObj[_key] = "";
          _jsonArray.push(myObj);
        }
    }
    console.log(_jsonArray);
}

JSFIDDLE

_jsonArray是对象的数组。如果属性已经存在,则必须检查每个对象。

试试这个代码。

var _arraySource = ['Tea', 'Coffe', 'Banana', 'Orange', 'Tea'];
var _jsonArray = [];
  for (var i = 0, j = _arraySource.length; i < j; i++) {
    var obj = $.map(_jsonArray, function (data) {
      if (data.hasOwnProperty(_arraySource[i]))
        return data;
      });
     if (obj.length) {
        console.log(_arraySource[i]);
     }
     else {
       var _key = _arraySource[i];
       var myObj = {};
       myObj[_key] = "";
       _jsonArray.push(myObj);
     }
  }
console.log(_jsonArray);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

希望这对你有帮助。