Javascript 如何不推所有阵列都没有此产品
例如,我有以下代码,我使用了以下json:Javascript 如何不推所有阵列都没有此产品,javascript,arrays,angularjs,json,Javascript,Arrays,Angularjs,Json,例如,我有以下代码,我使用了以下json: "food": { "appetizers": [ { "id": 1, "image": "../image/calammari.png", "title": "rings", "price": 11500, "ingredient":[{
"food": {
"appetizers": [
{
"id": 1,
"image": "../image/calammari.png",
"title": "rings",
"price": 11500,
"ingredient":[{
"id" : "0001",
"name": "avocado"
},
{
"id" : "0001",
"name": "tomato"
}
]
},
{
"id": 2,
"image": "../image/food2.png",
"title": "bang bang",
"price": 10000,
"ingredient":[{
"id" : "0001",
"name": "eggplant"
},
{
"id" : "0001",
"name": "cucumber"
}
]
}
从这个json文件中,如果数组my access等于蕃茄,我只想显示含有蕃茄的食物
所以我用了这个html:
<div ng-repeat="appetizer in appetizers ">
<div>
<img ng-src="{{appetizer.image}}" />
<div >
<p >
{{appetizer.title | uppercase}}
</p>
</div>
{{开胃菜.title}大写}
这个javascript:
var myAccess = ["tomato"];
$scope.test = [];
var appetizer = $scope.appetizers;
for (var i = 0; i < $scope.appetizers.length; i++) {
for (var j = 0; j < $scope.appetizers[i].ingredient.length; j++) {
if ($scope.appetizers[i].ingredient[j].name === myAccess) {
// what should i write here
}
}
}
return null; }
var myAccess=[“番茄”];
$scope.test=[];
var开胃菜=$scope.apperizers;
对于(变量i=0;i<$scope.apperizers.length;i++){
对于(var j=0;j<$scope.apperizers[i].component.length;j++){
如果($scope.apperizers[i].component[j].name==myAccess){
//我应该在这里写什么
}
}
}
返回null;}
很抱歉,如果有人能帮忙的话,请告诉我
所以myAccess=番茄,应该阅读开胃菜的第一部分,在配料番茄中,我只想推出含有番茄的配料 您可以通过以下方式使用and或:
含有某些成分的物品
const data=[{“id”:1,“image”:“./image/calammari.png”,“title”:“rings”,“price”:11500,“配料”:[{“id”:“0001”,“name”:“avocado”},{“id”:“0001”,“name”:“tomato”}],{“id”:2,“image”:“./image/food2.png”,“title”:“bang bang bang”,“price”:10000,“配料”:[{“id”:“0001”,“name”:“茄子”},{“id”:“0001”,“name”:“黄瓜”}];
const myAccess=[‘鳄梨’、‘西红柿’];
console.log(
数据过滤器(
(项目)=>
一些(
(配料)=>myAccess.includes(配料.名称)
)
)
);代码>您可以通过以下方式使用和或:
含有某些成分的物品
const data=[{“id”:1,“image”:“./image/calammari.png”,“title”:“rings”,“price”:11500,“配料”:[{“id”:“0001”,“name”:“avocado”},{“id”:“0001”,“name”:“tomato”}],{“id”:2,“image”:“./image/food2.png”,“title”:“bang bang bang”,“price”:10000,“配料”:[{“id”:“0001”,“name”:“茄子”},{“id”:“0001”,“name”:“黄瓜”}];
const myAccess=[‘鳄梨’、‘西红柿’];
console.log(
数据过滤器(
(项目)=>
一些(
(配料)=>myAccess.includes(配料.名称)
)
)
);代码>除了注释之外,请检查下面的JS,它可能会解决您的问题
function myFunction() {
var myAccess = "tomato";
$scope.test = [];
var appetizer = $scope.appetizers;
for (var i = 0; i < $scope.appetizers.length; i++) {
var flag = 'false';
for (var j = 0; j < $scope.appetizers[i].ingredient.length; j++) {
if ($scope.appetizers[i].ingredient[j].name === myAccess) {
flag = 'true'; // Flag to check whether it's exist
break;
}
}
if(flag == 'false') {
appetizer.splice(index, i); // Pop that item if it's not exist
}
}
$scope.appetizers = appetizer; // Re-assign
}
函数myFunction(){
var myAccess=“番茄”;
$scope.test=[];
var开胃菜=$scope.apperizers;
对于(变量i=0;i<$scope.apperizers.length;i++){
var标志='false';
对于(var j=0;j<$scope.apperizers[i].component.length;j++){
如果($scope.apperizers[i].component[j].name==myAccess){
flag='true';//检查它是否存在的标志
打破
}
}
如果(标志=='false'){
开胃菜。拼接(索引,i);//如果不存在该项目,则弹出该项目
}
}
$scope.appetizers=开胃菜;//重新分配
}
引入变量flag
,它将告诉数组是否包含myAccess
值。基于此,我从数组变量开胃菜中删除了该索引。最后,此数组变量将替换范围变量
我还没有检查密码。因此,如果合适的话,可以尝试使用这种逻辑从您的系统中实现
编辑-在比较@HMR answer:)时,我的代码看起来没有多大效果。除了注释之外,请检查下面的JS以解决您的问题
function myFunction() {
var myAccess = "tomato";
$scope.test = [];
var appetizer = $scope.appetizers;
for (var i = 0; i < $scope.appetizers.length; i++) {
var flag = 'false';
for (var j = 0; j < $scope.appetizers[i].ingredient.length; j++) {
if ($scope.appetizers[i].ingredient[j].name === myAccess) {
flag = 'true'; // Flag to check whether it's exist
break;
}
}
if(flag == 'false') {
appetizer.splice(index, i); // Pop that item if it's not exist
}
}
$scope.appetizers = appetizer; // Re-assign
}
函数myFunction(){
var myAccess=“番茄”;
$scope.test=[];
var开胃菜=$scope.apperizers;
对于(变量i=0;i<$scope.apperizers.length;i++){
var标志='false';
对于(var j=0;j<$scope.apperizers[i].component.length;j++){
如果($scope.apperizers[i].component[j].name==myAccess){
flag='true';//检查它是否存在的标志
打破
}
}
如果(标志=='false'){
开胃菜。拼接(索引,i);//如果不存在该项目,则弹出该项目
}
}
$scope.appetizers=开胃菜;//重新分配
}
引入变量flag
,它将告诉数组是否包含myAccess
值。基于此,我从数组变量开胃菜中删除了该索引。最后,此数组变量将替换范围变量
我还没有检查密码。因此,如果合适的话,可以尝试使用这种逻辑从您的系统中实现
编辑-在比较@HMR answer:)时,我的代码看起来没有多大效果。像这样将开胃菜推到数组中
function myFunction() {
var myAccess = ["tomato"];
$scope.test = [];
var appetizer = $scope.appetizers;
for (var i = 0; i < appetizer.length; i++) {
for (var j = 0; j < appetizer[i].ingredient.length; j++) {
if (appetizer[i].ingredient[j].name === myAccess) {
// what should i write here
$scope.appetizers.push(appetizer[i]); // additional code here.
}
}
}
return null; }
函数myFunction(){
var myAccess=[“番茄”];
$scope.test=[];
var开胃菜=$scope.apperizers;
对于(变量i=0;i
像这样将开胃菜放入您的阵列中
function myFunction() {
var myAccess = ["tomato"];
$scope.test = [];
var appetizer = $scope.appetizers;
for (var i = 0; i < appetizer.length; i++) {
for (var j = 0; j < appetizer[i].ingredient.length; j++) {
if (appetizer[i].ingredient[j].name === myAccess) {
// what should i write here
$scope.appetizers.push(appetizer[i]); // additional code here.
}
}
}
return null; }
函数myFunction(){
var myAccess=[“番茄”];
$scope.test=[];
var开胃菜=$scope.apperizers;
对于(变量i=0;i
这可能会对您有所帮助
var-app=angular.module(“myapp”,[]);
应用控制器(“测试控制”,功能($scope){
$scope.apperizers=[];
$scope.temp={
“食物”:{
“开胃菜”:[
{
“id”:1,
“图像”:../image/calamari。