【发布时间】:2017-01-30 19:47:21
【问题描述】:
我目前正在尝试根据查询字符串对某些值进行排序。我可以在这个循环中单独定位每个target,但似乎无法正确地将它们从数组中删除。如何从targetList 中删除与target.target 匹配的某些值?'
targetList.forEach(function(target, key) {
var os = getParameterByName('os');
if (os == "android") {
if (target.target.includes(":IOS")) {
targetList.splice(key, 1);
}
} else if (os == "ios") {
if (target.target.includes(":ANDROID")) {
targetList.splice(key, 1);
}
}
if (target.target.includes(":IOS")) {
target.target = schools[target.target.replace(":IOS", "").toLowerCase()] + " (iOS)" || target.target;
}
if (target.target.includes(":ANDROID")) {
target.target = schools[target.target.replace(":ANDROID", "").toLowerCase()] + " (Android)" || target.target;
}
});
targetList 包含一个这样的数组:
[
{
"target": "t1",
"datapoints": [
[
51.0,
1483574400.0
],
[
54.0,
1485561600.0
],
[
54.0,
1485648000.0
]
]
},
{
"target": "t2",
"datapoints": [
[
56.0,
1484265600.0
],
[
70.0,
1484352000.0
],
[
71.0,
1484438400.0
],
[
51.0,
1484611200.0
]
]
},
]
我正在尝试做的是目标匹配某些条件.includes() 我想删除整个包含对象/数组。
【问题讨论】:
-
getParameterByName()做了什么并返回? -
我的错,该函数只返回查询字符串的值。它根据我输入的内容返回正确的值。
-
创建一个重现问题的演示,所有条件都不适用于显示的虚拟数据
-
基本上 splice 实际上并没有拼接出我告诉它的值。如果 JSON 的目标包含
:IOS或:ANDROID,它应该从数组中删除整个对象,但事实并非如此。 -
我不确定您在寻找什么,但看起来您可能会为此使用 array.filter:
targetList = targetList.filter(function(target){ return target.target !== YourCondition; });
标签: javascript jquery arrays sorting