Suc*_*Man -2 javascript arrays jquery key object
我试着这样:
<script type="text/javascript">
var clubs = [
{id: 1, name : 'chelsea'},
{id: 2, name : 'city'},
{id: 3, name : 'liverpool'}
];
var newClub = {id: 4, name: 'manchester united'}
for(var i=0; i<clubs.length; i++) {
if(clubs[i].id!=newClub.id) {
clubs.push(newClub);
break;
}
}
console.log(clubs);
</script>
Run Code Online (Sandbox Code Playgroud)
我想添加条件.如果在俱乐部数组中不存在newClub对象的id,那么我想将该对象添加到数组中
有用
但我问.这是最好的方式吗?还是有另一种更好的方法吗?
有用
不,它没有.:-)如果第一个条目不匹配,你正在推动新俱乐部:
var clubs = [
{id: 1, name : 'chelsea'},
{id: 2, name : 'city'},
{id: 3, name : 'liverpool'}
];
function pushClub(newClub) {
for(var i=0; i<clubs.length; i++) {
if(clubs[i].id!=newClub.id) {
clubs.push(newClub);
break;
}
}
}
var newClub = {id: 4, name: 'manchester united'}
pushClub(newClub);
pushClub(newClub);
console.log(JSON.stringify(clubs));Run Code Online (Sandbox Code Playgroud)
.as-console-wrapper {
max-height: 100% !important;
}Run Code Online (Sandbox Code Playgroud)
Note that there are two id = 4 clubs.Run Code Online (Sandbox Code Playgroud)
在知道是否应添加新项目之前,需要遍历整个数组.
我可能会Array#some用来查看该项目是否存在:
if (!clubs.some(c => c.id == newClub.id)) {
clubs.push(newClub);
}
Run Code Online (Sandbox Code Playgroud)
var clubs = [
{id: 1, name : 'chelsea'},
{id: 2, name : 'city'},
{id: 3, name : 'liverpool'}
];
function pushClub(newClub) {
if (!clubs.some(c => c.id == newClub.id)) {
clubs.push(newClub);
}
}
var newClub = {id: 4, name: 'manchester united'}
pushClub(newClub);
pushClub(newClub);
console.log(JSON.stringify(clubs));Run Code Online (Sandbox Code Playgroud)
.as-console-wrapper {
max-height: 100% !important;
}Run Code Online (Sandbox Code Playgroud)
Note that there is only one id = 4 club.Run Code Online (Sandbox Code Playgroud)
我在那里使用ES2015 +箭头功能,但你可以使用ES5传统功能:
if (!clubs.some(function(c) { return c.id == newClub.id; })) {
clubs.push(newClub);
}
Run Code Online (Sandbox Code Playgroud)
循环进入some,true如果回调返回一个真值,或者false它从未返回,则返回.(当回调返回真值时,它也会提前停止.)
如果您想更新现有俱乐部(如果有的话),我会Array#find改用:
var existingClub = clubs.find(c => c.id == newClub.id);
if (existingClub) {
existingClub.name = newClub.name;
} else {
clubs.push(newClub);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
53 次 |
| 最近记录: |