我正在循环遍历一个数组并检查第二个数组是否具有该名称的键。如果没有,则将此当前名称添加为第二个数组的键。我用 hasOwnProperty
和 in
检查,但在这两种情况下, key 都被添加到第二个数组中,尽管该名称的 key 已经存在。如何阻止 key 获取如果已经存在则添加?
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);
}
最佳答案
_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>
希望这对您有帮助。
关于javascript - 即使数组有键,json 对象键也会被添加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33913922/