如何在打字稿中使用 each(..) 函数?

问题描述

_.each(key_val,function(e){
            if($.inArray(e[0],names) == -1){
                var node = {};
                node.name = e[0];
                if(e[1]) {
                    node.value = e[1];
                    node.symbolSize = e[1] * nodeProp;
                }
                optionNodes.push(node);
                names.push(e[0]);
            }
        });

来自使用过的 angular.js 的代码我必须合并到 angular 打字稿中。 这里是“key_val”是数组

解决方法

forEach() 方法为数组中的每个元素调用一个函数。

语法如下,

array.forEach(callback[,thisObject]);

哪里,

回调 - 测试每个元素的函数。

thisObject - 在执行回调时用作 this 的对象。

示例:

let num = [7,8,9];
num.forEach(function (value) {
  console.log(value);
}); 

在编译时,会生成以下 JavaScript 代码

var num = [7,9];
num.forEach(function (value) {
    console.log(value);
});

其输出如下

7
8
9
,

为了实现您的函数正在执行的操作,您可以创建一个具有名称和值键的对象数组,如下所示 -

let key_val = [{name: 'c',value: 'xyz'},{name: 'd',value: ''}];

假设您还有一个名称数组,例如 -

let names = ['a','b'];

要遍历 key_val 数组中的每个对象,可以像这样使用 map -

key_val.map(item => {
  if(names.indexOf(item.name) === -1) {  //checking if item.name is present in names array or not
    var node = {};
    node.name = item.name;
    if(item.value) {
       node.value = item.name;
       node.symbolSize = item.name * nodeProp;
    }
    optionNodes.push(node);
    names.push(item.name);
  }
});