Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/465.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在特定键之前返回数组中的所有数组项_Javascript_Arrays - Fatal编程技术网

Javascript 如何在特定键之前返回数组中的所有数组项

Javascript 如何在特定键之前返回数组中的所有数组项,javascript,arrays,Javascript,Arrays,我需要从数组中返回项目。困难在于从获取请求返回的数组可能返回不同的键,而这些键在返回之前无法确定。公共分母是“created_by”键。正如标题所示,我需要知道一种方法,可以在通过键创建_之前动态呈现所有以前的值 这是我现在设置的渲染/贴图方法,无法正常工作 return <div className="data-subContainer"> {resData.map(item => <span key={item.id}>{item

我需要从数组中返回项目。困难在于从获取请求返回的数组可能返回不同的键,而这些键在返回之前无法确定。公共分母是“created_by”键。正如标题所示,我需要知道一种方法,可以在通过键创建_之前动态呈现所有以前的值

这是我现在设置的渲染/贴图方法,无法正常工作

return <div className="data-subContainer">
      {resData.map(item => <span key={item.id}>{item[1.3]} - <b>{item[2]}</b></span>)}
    </div>
示例1:(注意键号与示例2不同)

例2:

1.2: ""
1.3: "X"
1.4: ""
1.6: "X"
1.8: ""
4: "X"
5: "X"
6: "X"
7: "X"
8: "X"
9: "X"
created_by: "X"

你可以试着向地图施法

var resMap = new Map(Object.entries(resData));
然后通常可以通过键进行迭代

resMap.keys()
更新的答案

const resData = {
  1: 'XX',
  2: 'XXXX',
  3.2: '',
  3.3: 'XX',
  3.4: '',
  3.6: 'X',
  3.8: '',
  4: 'X',
  5: 'X',
  8: 'X',
  10: 'X',
  11: 'X',
  12: 'X',
  13: 'X',
  created_by: 'X',
  test: 1
};

const resMap = new Map(Object.entries(resData));
for (const [key, value] of resMap) {
  if (key === 'created_by') { return; }
  console.log(key, value);
}

您可以使用
for in
在对象中循环,
将值推送到一个新对象,然后在到达由
创建的
中断

var arr={1:“XX”,
2:“XXXX”,
3.2: "",
3.3:“XX”,
3.4: "",
3.6:“X”,
3.8: "",
4:“X”,
5:“X”,
8:“X”,
10:“X”,
11:“X”,
12:“X”,
13:“X”,
创建人:“X”,
测试:1
};
var newa={};
对于(我在arr中){
newa[i]=arr[i];
如果(i==“创建人”){
打破
}
}

console.log(newa)如果该数据被建模为一个对象,那么从键来看似乎是这样,您没有确定的机会知道键的顺序,因为JavaScript对象与数组不同,不能保证顺序

如果您能够以数组的形式检索这些数据,那么您的订单就可以得到保证,我会相应地建议您。类似于以下假设案例的方式

可以创建一个算法,该算法接受要渲染或不渲染的props值的名称

首先,您需要针对以下对象使用过滤算法:

function filterObject(object, filteringFunction, initialAccumulator = {}) {
    return Object.entries(object)
        .filter(([key, value], indexInEntriesArray, entriesArray) => filteringFunction(key, value, indexInEntriesArray, entriesArray))
        .reduce((acc, [key, value]) => ({ ...acc, [key]: value }), initialAccumulator);
}
有了它,您可以根据您定义的自定义过滤函数过滤对象中的关键点。您可以根据entries数组中的键、值、索引(从
Object.entries
调用返回)根据需要进行筛选

之后,您需要使用该函数映射
resData
数组本身,并根据需要执行每个对象的过滤道具:

const mappedResData = resData.map(item => filterObject(item, myFilteringFunc))
使用自定义的
filteringFunction
来过滤阵列中的每个对象。你可以在这里做任何事。在这里,我只是删除了您列出的键

const myFilteringFunc = (key, val, i, entArr) => undesiredKeysArray.includes(key) === false;
其中,
undesiredKeysArray
只是一个字符串数组,每个字符串都是
resData
中每个对象中的属性名称


如果JavaScript对象的顺序得到了保证(事实并非如此),您可以
对象
静态方法
条目
,以获取它们的名称和数组,并查找要停止渲染的键的名称和
切片
该数组,然后返回
切片
调用。

您给出的示例的输出应该是什么?您检索的数据的形状是什么?@sçuçu我不理解您的问题。你能详细说明一下吗?什么是resData?它的结构是什么?它是像
[{1.3:“X”},…]
这样的数组吗。我已经编辑了这个问题,将resData的结构(它作为对象返回)包括在内。您能否提供一个示例,说明我将如何在对象列表中使用它,并在创建之前获取值?@SethSpivey再次强调,您无法在JavaScript对象中按顺序获取属性。最好定义您想要的或不需要的键,然后使用这些键。我在下面的回答中已经用一个例子解释了这一点。你们应该在原始问题中详细说明。
const mappedResData = resData.map(item => filterObject(item, myFilteringFunc))
const myFilteringFunc = (key, val, i, entArr) => undesiredKeysArray.includes(key) === false;