小编San*_*rma的帖子

Lodash:返回其值(即Array)中包含给定元素(即字符串)的对象的第一个键

我有一个像这样的对象:

var obj = {
  "01": ["a","b"],
  "03": ["c","d"],
  "04": ["e","c"]
};
Run Code Online (Sandbox Code Playgroud)

并且我知道对象键值的数组元素(比如"c")然后如何使用lodash找到第一个键值即"03"而不使用if else?

我尝试使用lodash和if if:

var rId = "";
_.forOwn(obj, function (array, id) {
     if (_.indexOf(array, "c") >= 0) {
           rId = id;
           return false;
     }
});

console.log(rId); // "03"
Run Code Online (Sandbox Code Playgroud)

预期结果:第一个键,即"03",如果元素匹配"".

看到评论后:现在我也很想知道

我是否需要使用本机javascript(如果我们使用超过2个if块的情况下难以阅读的程序)或lodash方式(在一行中易于阅读的程序解决方案)?

javascript lodash

21
推荐指数
2
解决办法
3万
查看次数

离子2:为什么改变事件不能用于离子选择?

为什么改变事件不能用于离子选择?

我尝试了以下声明:

<ion-select formControlName="shippingMethod (change)="shippingMethodChange($event)">
Run Code Online (Sandbox Code Playgroud)

我也尝试使用ionChange,这是有效的:

<ion-select formControlName="shippingMethod (ionChange)="shippingMethodChange($event)">
Run Code Online (Sandbox Code Playgroud)

有人说"我们可以使用Angular事件绑定来响应任何DOM事件",这里是更改事件的文档

https://developer.mozilla.org/en-US/docs/Web/Events/change

ionic2 angular

8
推荐指数
2
解决办法
2万
查看次数

离子3.X:具有无限滚动的虚拟滚动(即更改数据集)

我正在使用"ionic-angular":"3.2.1"版本,但虚拟列表在一些滚动后显示以下空白屏幕.

在此输入图像描述

我尝试了下面的代码.

<ion-content padding>
    <ion-list [virtualScroll]="products" approxItemHeight="100px" [virtualTrackBy]="trackProduct">
        <ion-item category-item *virtualItem="let product" (click)="viewProduct(product)">
            <img product-image src="some_url.png" />
            <div prduct-description ellipsize>
            <div product-name ellipsize>{{product.productName || "" | uppercase}}</div>
                <div product-sku ellipsize>SKU# : {{product.sku}}</div>
                <div price>${{product.price}}/Case</div>
            </div>
        </ion-item>
    </ion-list>
    <ion-infinite-scroll (ionInfinite)="doInfinite($event)" threshold="100px" #infiniteScroll>
        <ion-infinite-scroll-content loadingSpinner="bubbles" loadingText="Loading more data...">
        </ion-infinite-scroll-content>
    </ion-infinite-scroll>
</ion-content>
Run Code Online (Sandbox Code Playgroud)

这里是相关的ts文件代码:

 /**
  *  This method will be used for virtual scroll.
  * @param index 
  * @param product 
  */
  trackProduct(index, product: Product) {
    console.log(index, product);
    return product.productId;
  }
Run Code Online (Sandbox Code Playgroud)
  • trackProduct没有被调用.

我也试过没有virtualTrackBy指令,但没有任何工作.

谁能帮助我?

ionic-framework ionic2 ionic3

5
推荐指数
1
解决办法
2493
查看次数

在单页应用程序中检查Service Worker更新

我们有一个信号页应用程序,它已安装并处于活动状态。

现在我们的服务器重建了应用程序,服务端文件正在服务器端更新。

我们的客户对这个新的Service Worker文件一无所知,并且仍在使用旧的Service Worker文件。

什么时候有效? 如果我刷新/重新加载该应用程序,则正在安装新的Service Worker。

如果正在服务器上更新服务工作者文件并且未重新加载客户端,我们如何刷新客户端?

可能的解决方案:我认为,我需要在1小时左右之后进行轮询。

service-worker workbox workbox-webpack-plugin

5
推荐指数
1
解决办法
1475
查看次数

Java:在LinkedList中的元素之后添加元素

我想在列表中的元素之后添加一个元素,如果列表已经包含该元素,否则我想将这个新元素添加到列表的开头.

不知何故下面的代码不起作用.

有什么建议?

这种方法是否正确地表现出来?

public class HelloWorld
        {
          public static void main(String[] args) {
          LinkedList<Task> l =new LinkedList<Task>();

            l.add(new Task("a")); 
            l.add(new Task("b"));
            l.add(new Task("c")); 

            int index;

            if((index = l.lastIndexOf(new Task("a"))) != -1){
               l.add(++index, new Task("5"));
            }else{
               l.addFirst(new Task("6"));
            }        
            System.out.println(l);
      }
    }

    class Task{
     String value;

      Task(String v){
        value = v;
      }

      public boolean equals(Task t){
        return t.value.equals(this.value);
      }  

      public String toString(){  
       return this.value; 
      }
    }
Run Code Online (Sandbox Code Playgroud)

输出产生: [6,a,b,c]

预期产出: [a,5,b,c]

java list

1
推荐指数
1
解决办法
73
查看次数