如果未定义则推送新对象并在可用时忽略
Push new object if it's undefined and ignore when it is available
我想将新对象推送到 JSON 数组(如果尚不可用),如果可用则忽略它。例如,如何在第二次单击按钮时忽略此代码中的登录:
var things = [];
$("#button").click(function(){
things[0]["id456"] != undefined ? console.log("ignored") : things.push({"id456":"clicked"});
$("#output").text(JSON.stringify(things));
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id='output'></div>
<button id="button">
Click
</button>
我知道我可以做这样的事情:
var strThings = JSON.stringify(things);
var available = strThings.search("id456");
available === -1 ? things.push({"id456":"clicked"}) : console.log("ignored");
但我认为这不是个好主意。
使用Array#some()
:
var things = [];
$("#button").click(function() {
things.some(thing => thing.id456 !== undefined) ? console.log("ignored") : things.push({
"id456": "clicked"
});
$("#output").text(JSON.stringify(things));
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id='output'></div>
<button id="button">Click</button>
但是,如果您需要我的建议,请不要尝试一次性完成。这些神奇的东西叫做 if
and else
statements:
var things = [];
$("#button").click(function() {
let containsId456 = things.some(
thing => thing.id456 !== undefined
);
if (containsId456) {
console.log("ignored");
} else {
things.push({"id456": "clicked"});
}
$("#output").text(JSON.stringify(things));
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id='output'></div>
<button id="button">Click</button>
但最后,除非我遗漏了什么,否则使用 Map
或用作 ID 字典的对象会更容易:
var things = new Map();
$("#button").click(function() {
if (things.has("id456")) {
console.log("ignored");
} else {
things.set("id456", "clicked");
}
$("#output").text(JSON.stringify([...things]));
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id='output'></div>
<button id="button">Click</button>
我想将新对象推送到 JSON 数组(如果尚不可用),如果可用则忽略它。例如,如何在第二次单击按钮时忽略此代码中的登录:
var things = [];
$("#button").click(function(){
things[0]["id456"] != undefined ? console.log("ignored") : things.push({"id456":"clicked"});
$("#output").text(JSON.stringify(things));
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id='output'></div>
<button id="button">
Click
</button>
我知道我可以做这样的事情:
var strThings = JSON.stringify(things);
var available = strThings.search("id456");
available === -1 ? things.push({"id456":"clicked"}) : console.log("ignored");
但我认为这不是个好主意。
使用Array#some()
:
var things = [];
$("#button").click(function() {
things.some(thing => thing.id456 !== undefined) ? console.log("ignored") : things.push({
"id456": "clicked"
});
$("#output").text(JSON.stringify(things));
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id='output'></div>
<button id="button">Click</button>
但是,如果您需要我的建议,请不要尝试一次性完成。这些神奇的东西叫做 if
and else
statements:
var things = [];
$("#button").click(function() {
let containsId456 = things.some(
thing => thing.id456 !== undefined
);
if (containsId456) {
console.log("ignored");
} else {
things.push({"id456": "clicked"});
}
$("#output").text(JSON.stringify(things));
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id='output'></div>
<button id="button">Click</button>
但最后,除非我遗漏了什么,否则使用 Map
或用作 ID 字典的对象会更容易:
var things = new Map();
$("#button").click(function() {
if (things.has("id456")) {
console.log("ignored");
} else {
things.set("id456", "clicked");
}
$("#output").text(JSON.stringify([...things]));
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id='output'></div>
<button id="button">Click</button>