Javascript 从json jquery中删除位置
我不想展示同一产品的两倍。如果isbn重复出现,则不要将其显示为双精度Javascript 从json jquery中删除位置,javascript,jquery,Javascript,Jquery,我不想展示同一产品的两倍。如果isbn重复出现,则不要将其显示为双精度 { “产品”:[{ “标识”:“001”, “isbn”:“2332”, “折扣”:“10%”, “书店”:“图书馆1” }, { “标识”:“002”, “isbn”:“2332”, “折扣”:“20%”, “书店”:“图书馆2” }, { “标识”:“003”, “isbn”:“3422”, “折扣”:“30%”, “书店”:“图书馆3” }, ] } 函数getData(){ $.getJSON('data.json'
{
“产品”:[{
“标识”:“001”,
“isbn”:“2332”,
“折扣”:“10%”,
“书店”:“图书馆1”
}, {
“标识”:“002”,
“isbn”:“2332”,
“折扣”:“20%”,
“书店”:“图书馆2”
}, {
“标识”:“003”,
“isbn”:“3422”,
“折扣”:“30%”,
“书店”:“图书馆3”
}, ]
}
函数getData(){
$.getJSON('data.json',函数(data){//get data from data.json
var产品=数据产品;
var tr=$(“”);
var项目=“”;
美元。每个(产品、功能(键、值){
项目+=“”;
项目+=“”+value.ident+“”;
项目+=“”+value.isbn+“”;
`在这里输入代码`
项目+=“”+价值.折扣+“”;
项目+=“”+value.bookstore+“”;
项目+=“”;
});
$(“#数据”).append(items);//在表中显示数据
});
将ISBN插入阵列,然后检查阵列中是否存在ISBN
var arr = [
{
"ident":"001",
"isbn":"2332",
"discount":"10%",
"bookstore": "library1"
},
{
"ident":"002",
"isbn":"2332",
"discount":"20%",
"bookstore": "library2"
},
{
"ident":"003",
"isbn":"3422",
"discount":"30%",
"bookstore": "library3"
}
];
var arrISBN = [];
for(let index in arr) {
if ( arrISBN.indexOf(arr[index].isbn) == -1 ) {
arrISBN.push( arr[index].isbn);
console.log("No duplicates");
}
}
您可以保留数组中的ISBN列表,然后在使用该数组之前检查该数组是否包含ISBN
var bookList = [];
$.each(products, function(key, value) {
// Pushes value.isbn to the bookList array
bookList.push(value.isbn);
// If the IBSN is not present in bookList then act as if it's a new entry instead of repeating it.
if (!bookList.includes(value.isbn)) {
// Do something with the data here.
}
}
您可以通过一个简单的
for
循环来实现这一点。为了解决这个问题,我硬编码了JSON
数据。但是,您可以使用$.getJSON()
例程来实现ajax请求(如上所述),结果将是相同的:
var json={
“产品”:[{
“标识”:“001”,
“isbn”:“2332”,
“折扣”:“10%”,
“书店”:“图书馆1”
}, {
“标识”:“002”,
“isbn”:“2332”,
“折扣”:“20%”,
“书店”:“图书馆2”
}, {
“标识”:“003”,
“isbn”:“3422”,
“折扣”:“30%”,
“书店”:“图书馆3”
}, ]
};
var乘积={};
for(var a=0,len=json.products.length;a
为什么你的问题描述中有这么多重复?很好的咒语!知道哪一个被保留或丢弃的规则是什么?第一个?我很多重复都是错误添加的。我sorry@Piotr这将有助于:在td“书店”请在两个库中查看它。好的方法。需要注意的是,Array.prototype.includes
当前在IE中不受支持。如果您选择实现此方法,您将需要使用MDN提供的。啊,是的,很好!@JamesIves您可以动态构建表,并避免添加包含重复值的行。你的主意是什么?非常感谢。太好了